从std:vector获取数组

时间:2010-11-27 01:32:46

标签: c++ arrays vector

从向量中获取char数组的最简单方法是什么?

我正在做的是使用vector begin和end迭代器初始化一个字符串,然后从这个字符串中获取.c_str()。还有其他有效的方法吗?

2 个答案:

答案 0 :(得分:68)

Scott Meyers的 Effective STL 对此进行了讨论,您可以&vec[0]获取std::vector的第一个元素的地址,并且自标准约束以来有了连续记忆的向量,你可以做这样的事情。

// some function
void doSomething(char *cptr, int n)
{

}

// in your code
std::vector<char> chars;

if (!chars.empty())
{
    doSomething(&chars[0], chars.size());
}

编辑:从评论(感谢卡萨布兰卡)

  • 要小心保存指向此数据的指针,因为如果修改了向量,指针可能会失效。

答案 1 :(得分:41)

std::vector<char> chars;
char* char_arr = chars.data(); // &chars[0]