C++primer 第三章

2021-03-26 06:27

阅读:712

标签:中间   一个   换行   begin   数组初始化   style   引用   auto   元素   

· 头文件不应包含using声明:若某文件中使用了多个头文件(含using声明)   产生冲突

 

· string s; cin >> s;  string对象读取时自动忽略开头的空白(空格符、换行符、制表符等) 并从第一个真正的字符读起,直到遇见下一处空白为止

· getline:可以读取空白符,直到遇到换行符为止     (换行符会被读取进istream,但是会被丢弃不放入string中)

· string.size(): size()返回的类型:size_type  无符号     

       Attention:若n为一个负值int,(s.size()

· string相加:至少有一个对象是string类型

· 字符串字面值 != string类型

 

· vector是模板,而非类型

· vector的元素是对象,而引用不是对象,所以不存在vector的元素是引用

· vector能高效动态增长,无需设定其容量大小   (除非所有元素值相同)

 

· 如果容器为空,begin和end返回的是同一个迭代器, 尾后迭代器

        由此检查容器是否为空的办法:s.begin() != s.end()

· const vector: cbegin()、cend()

· 迭代器失效:改变容量操作(如push_back)  →  迭代器失效

        Attention:凡是使用了迭代器的循环体,都不要push_back

· 迭代器运算: ①没有  迭代器 + 迭代器  的操作    ②迭代器 + n 返回 迭代器      

          所以比如找一段数据的中间数: mid = beg + (end - beg) / 2    (其中beg、end为头尾   此操作是  迭代器 + n)

 

· 数组中的维度必须是常量表达式: a[d]     d必须是const

· 数组的元素为对象:与vector一致,不存在引用的数组

· 字符数组预留空字符: 如char a[6] = "Daniel"      // 错误,没有空间可存放空字符

· 一般在使用时,数组会自动转换成指针

 

· 用数组赋值vector: vector ivec(arr, arr + n)     // 反之则不行

 

· 多维数组初始化每行的第一个元素: int ia[3][4] = { {0}, {4}, {8} }

· 范围for语句处理多维数组:要注意引用,否则将转换成指针   若不使用引用  i的类型就是int*

             除了最内层循环,其他循环都必须引用

for (auto &i : ia)
{
    for (auto j : i )   
}

 

C++primer 第三章

标签:中间   一个   换行   begin   数组初始化   style   引用   auto   元素   

原文地址:https://www.cnblogs.com/ctxcc/p/13714875.html


评论


亲,登录后才可以留言!