1.using用法:using namespace ::name;注意事项:一般不在头文件使用using否则很容易导致运用命名空间不对错误。

2.string的方法:
①getline(输入流,string对象);注意一点是,函数从给定流读入内容,直到遇到换行符结束,(换行符也被读进来了),然后把所读的内容存入那个string对象中去(注意不存换行符

②size,size函数的返回值是string::size_type,可以确定的是这是一种无符号数,可以使用auto或者decltype来推断变量的类型。
auto len = line.size(); //len类型是string::size_type.
ps:如果一条表达式中已经有了size()函数就不要int了,避免混用有符号int和unsigned带来的问题(负数和无符号数比较时候会自动转换为一个很大的无符号数)

3.string是一种可变字符序列,其实就是一种可变长的字符数组,注意它和字符/字符串字面值不是同一类型的量。

4.当把string对象和字符串字面值混在一条语句中使用时,必须确保每个加法运算符(+)的两侧的运算对象至少有一个是string.

5.如果想改变string对象中字符的值,必须把for(declaration : expession)中的循环变量定义成引用类型。

6.用下标访问string类型变量前,都需要检查s是否为空。否则访问会导致不可预料的结果。
例子:
string s ("some string");
if(!s.empty())
{
s[0] = toupper(s[0]);
}
5
 
1
string s ("some string");
2
if(!s.empty())
3
{
4
    s[0] = toupper(s[0]);
5
}


7.注意点:string下标使用的注意点:大于等于0,小于等于s.size().
①总是设下标的类型为string::size_type
②满足下标小于s.size();

8.对于vector的编程要求:
①必须确保所写的循环正确无误,特别是在循环条件有可能改变vector对象容量的时候。
②如果循环体内部包含有向vector对象添加元素的语句,则不能使用范围for循环。
③任何一种可能改变vector对象容量的操作,比如push_back,都会使该vector对象的迭代器失效。
但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素。

9.要使用vector中的size_type必须先指定它是由哪种类型定义的。vector对象的类型总是包含着元素的类型:
vector<int>::size_type  //正确
vector::size_type  //错误

10.只有当元素可以比较的时候,vector对象才可以比较。

11.vector对象(以及string对象)的下标运算可用于访问已经存在的元素,而不能用于添加元素(添加元素只能通过push_back,在不用这些方法前这个vector对象的数量都是已经定下的,因此向其中添加元素会引起访问越界。)

12.在for循环中应该要更多的使用!=判断符,而不是类似<这类的大小比较符,因为并不是所有的容器都定义了<,>,但是所有的容器都定义了== 和!=,因此这种编程风格在标准库提供的所有容器上都有效。

13.每个容器类定义了名为iterator和const_interator的类型。前者可用于常量或非常量对象,后者指的是所定义的迭代器所指的元素值不能修改,因此只能用于常量对象

14.begin和end返回的是iterator还是const_iterator由容器的类型决定,对象是常量对象,则返回const_iterator,非常量则为iterator.另外C++11中新引入了两个新函数,cbegin和cend,无论对象是常量还是非常量,这两个函数返回值都是const_iterator.

15.vector和数组的区别:数组的大小确定不变,不能随意向数组中增加元素。

16.想要理解数组的声明的含义,最好的方法就是从数组的名字开始按照由内向外的顺序阅读.
例子:
int (*Parray)[10] = &arr; //Parray指向一个含有是个int元素的数组
int (&arrRef)[10] = arr; //arrRef引用一个含有十个整数的数组
int *(&arry)[10] = ptrs; // arry是数组的引用,该数组含有10个int型指针
 
1
int (*Parray)[10] = &arr; //Parray指向一个含有是个int元素的数组
2
int (&arrRef)[10] = arr; //arrRef引用一个含有十个整数的数组
3
int *(&arry)[10]  = ptrs; // arry是数组的引用,该数组含有10个int型指针

17.当decltype作用于数组的时候就应该小心,
int iarr[10] = {0};
decltype(iarr)ib;

这个时候ib的定义等价于 int ib[10];两者是一样的。不要觉得ib是一个指针了,它是一个正宗的数组。


18.标准库(如vector,string)限定使用的下标必须是无符号类型,而内置的下标运算所用的索引值不是无符号类型。

Chapter3 (字符串,向量,数组) --C++Prime笔记的更多相关文章

  1. shell入门笔记2:字符串、数组、echo与printf

    说明: 本文是关于http://c.biancheng.net/cpp/shell/的相关笔记 shell字符串 字符串可以用单引号,也可以用双引号,也可以不用引号. 1 #!/bin/bash 2 ...

  2. PHP字符串和数组

    php常用函数和数组 字符串替换 , 分割字符串(字符串转数组),  拼接数组的值(数组组转字符串) , 格式化输出  查找字符首次出现的位置 , 获取字符串长度 以一个数组作为key另一个数组作为v ...

  3. JavaScript权威设计--JavaScript数组(简要学习笔记九)

    1.数组的创建 如: var a=[1.1,null,"a"]; var b=[1, ,3]; //中间的那个元素是undefined var c=[ , , ] 这里c.leng ...

  4. sizeof、strlen、字符串、数组,整到一块,你还清楚吗?

    写在前面 sizeof.strlen.字符串.数组,提到这些概念,相信学过C语言的人都能耳熟能详,也能谈得头头是道,但是,在实际运用中,当这些内容交织在一起时,大家却不一定能搞地清清楚楚,本文的目的正 ...

  5. Java中将一个字符串传入数组的几种方法

    String Str="abnckdjgdag"; char a[]=new char[Str.length()]; -------------------方法1 用于取出字符串的 ...

  6. 03- Shell脚本学习--字符串和数组

    字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号.单双引号的区别跟PHP类似: 单双引号的区别: 双 ...

  7. js中字符串和数组相互转化的方法

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } p. ...

  8. bash中不可以用字符串做数组下标

    bash中可以用字符串做数组下标吗例如 test["abc"]=1------解决方案-------------------- 好像是误会,是awk里可以,bash shell里不 ...

  9. js数字、字符串、数组之间的转化

    1.数组转字符串 var a, b; a = ,,,,); b = a.join("-"); 2.字符串转数组 var s = "abc,abcd,aaa"; ...

随机推荐

  1. tree命令详解

    基础命令学习目录首页 原文链接:http://man.linuxde.net/tree -a:显示所有文件和目录:-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合:-C:在文件和目录清单加 ...

  2. C++ 函数 引用

    一.引用的概念 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.引用的声明方法: 类型标识符 &引用名 = 目标变量名: 为一个变量起一个别名.假如有一个变量a,想给 ...

  3. java控制台编译通过,运行出现找不到或无法加载主类的情况

    参考链接:http://www.knowsky.com/1046493.html 当建了一个包之后(假设建的包的名字为com),找到该java文件的com目录,发现编译能够通过,但是运行的时候出现了一 ...

  4. 在写ssh项目时浏览器页面出现http status 404 – not found

    HTTP Status 404 - /streetManager/index.jsp type Status report message /streetManager/index.jsp descr ...

  5. NABC for Teamproject

     “教育是一个社会发展的支柱, 你和我能看到并理解这个博客, 教育功不可没. 高等教育的形式并不是一成不变的, 高等教育一直在演进.”邹欣老师在博客上如此写道.为了迎合信息化时代的特色,网络上的知识传 ...

  6. 《Spring2之站立会议2》

    <Spring2之站立会议2> 昨天,模仿着资料把客户端和服务器端的代码写了一下: 今天,继续找本机的端口号和逐步深入理解代码含义: 遇到的问题,在理解时,对一些知识理解还是比较朦胧,一知 ...

  7. python learning1.py

    # 廖雪峰的官方网站 python教材 1~4章 # 格式控制符语法 print('Hello, %s' % 'world') print('hello, %s, you have %d dollar ...

  8. struts2的运行原理以及底层的工作机制

    1 请求,请求路径是/login(发起请求,被filter拦截) 2 DispatcherFilter 3 获取当前请求的路径 通过request对象 request.getServletPath 4 ...

  9. Spring 中使用Properties文件

    Spring提供了加载Properties文件的工具类:org.springframework.beans.factory.config.PropertyPlaceholderConfigurer. ...

  10. Sprint2-2.0

    1.开始一个新的冲刺: 起止:2016.6.1~2016.6.14 按照以下过程进行 ProductBacklog:继续向下细化 Sprint 计划会议:确定此次冲刺要完成的目标 Sprint Bac ...