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. 记事本APP之Alpha报告

    项目名称 记事本APP 项目版本 Alpha版本 负责人 北京航空航天大学计算机学院 Echo软件团队 联系方式 http://www.cnblogs.com/echo-buaa/ 要求发布日期 20 ...

  2. “北航Clubs”项目汇报

    一.项目展示 二.用户的痛点与需求 1.北航学生,在百团大战之后,很难再有渠道加入社团,了解社团活动,简直如蒙在鼓里! 2.当你周末想参加一些活动,充实一下枯燥的求学生活时,却发现不知道有哪些社团有活 ...

  3. Linux基础入门--04

    目录结构及文件基本操作 实验介绍: 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录结构之 ...

  4. 使用sqlyog创建数据库的错误

    1.错误代码: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...

  5. delphi 图像处理 二值化

    procedure TDR_QM_ZP_Form.Image_EZH( Bmp: TBitmap ); var p: PByteArray; Gray, x, y: Integer; begin // ...

  6. Sprint6

    进展:今天更改一下我们的计划,从实现主要功能开始,及闹钟和事件提醒部分.查看了一些有关闹钟部分的资料.

  7. sprint会议1

    昨天:进行第一次站立会议,讨论冲刺阶段,目标,任务认领,制作索引卡. 今天:准备查找安卓APP开发的有关资料,安装有关软件. 遇到的问题:对这方面毫无了解,不知道怎么开始,从哪开始,完全没经验.

  8. 关于 error C2001: 常量中有换行符

    看过之后,还是有所收获的,先mark一下 原链接: http://www.cnblogs.com/cocos2d-x/archive/2012/02/26/2368873.html#commentfo ...

  9. WPF四则运算《《《《《策略模式

    设计思路:           因为之前没有用过WPF,听说和window窗体语法类似,就想着仿照之前的Window窗体做的,首先用三个textbox存储数据,添加一个comboBox,利用索引选择运 ...

  10. rua出300道四则运算题