C++ 墙角知识 02

来源:互联网 发布:怎么提升自己 知乎 编辑:程序博客网 时间:2024/05/01 15:07

如果一个表达式已经有 size()函数,就不要再使用int的变量了, 可能会引起错误。
因为 int可能是一个负数, 而会转化为一个无符号的数,就非常大。

两个string对象相加
s1+s2
字面值可以和string对象相加 s1+”nihao”
但是两个字面值不能直接相加。

如果有多个连加, 注意 加号 两侧至少有一个是 string对象。
如 s1 + “aaa” +s2;

s1+”aaa” 的结果还是一个string对象

为了与C兼容, 字面值并不是string对象,而是 C的字符串。末尾是\0

C++在兼容C头文件的时候, name.h 都变成了 cname ,去掉了后面的 .h 而在文件名前加了c,说明这是一个C语言的标准库头文件。
而且在cname中定义的名字 ,属于命名空间std ,name.h的则不然。推荐使用 cname的头文件。

顺序存储结构 有 下标运算符。

任何时候,使用下标访问,都要保证那个位置有值。

vector
同类型对象的集合
#include << vector >>
using std::vector;

vector是一个类模板

实例化

vector是模板,而不是类型, 想要 生成类型必须 包含vector中元素的类型 如 vector < int>

对待老式编译器,当vector的元素还是vector时, 外层括号,和内层元素见 ,需要一个空格,如
vector < vector< int> >

vector< int> ivec (4,5);
vector < int > svec{3,4};
如果是圆括号,是构造vector对象
如果是花括号,是初始化列表。
但是花括号在无法当作列表时候, 又会当成圆括号来用, 这编译器做的也太复杂了。

vector操作
http://www.cplusplus.com/reference/vector/vector/

vector< int>::size_type

0 0