从std:vector获取数组

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

我在做的方式是使用向量开始和结束迭代器初始化字符串,然后从此字符串获取.c_str()。 还有其他有效的方法吗?


这在Scott Meyers的Effective STL中已经讨论过了,你可以通过&vec[0]获得std::vector的第一个元素的地址,并且由于标准限制了vector的连续内存,所以你可以做这样的事情。

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

}

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

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

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

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

  • std::vector<char> chars;
    char* char_arr = chars.data(); // &chars[0]
    
    链接地址: http://www.djcxy.com/p/91703.html

    上一篇: Getting array from std:vector

    下一篇: How do I close a single buffer (out of many) in Vim?