std vector与C语言
C++的标准中,std::vector容器底层的内存是连续的。因此,vector<char>可以用作字符数组,也可以当做字符串使用。
vector<char>当做数组用,可以使用&vector[0]获取首地址。传给char*类型的参数或者变量。
需要注意的是:vector<char>当做字符串使用,使用C语言函数,比如memcpy、strncpy等等函数,对其进行操作。那么其内部的成员变量不会受影响。调用容器对应的成员函数,也不会有效。举例如下:
std::vector<char> vec;
strncpy(&vec[0], "hello, world", ::strlen("hello, world"));
那么,vec.size()获取的容器元素大小为0,调用clear()进行清理,也不会生效。