获取指向所有std :: vector元素的指针的最佳方式(从代码可读性和语义)是什么,因此它可以用作通常的数组?我以前用过:
void Func( int* )
...
std::vector<int> x(1000);
Func(&(x[0]));
但我想知道有没有更漂亮的方法呢? x.begin()返回vector :: iterator。
答案 0 :(得分:7)
x.data()
或C ++ 03中的&x.front()
答案 1 :(得分:2)
除了戴夫的答案,你可以省略括号:
int * xP = &x[0];
这真的很短,它会得到。
答案 2 :(得分:0)
您也可以这样写:int * xp = &x.front()
,但没有最佳解决方案,您编写的所有内容都应该由编译器优化为相同的结果。
答案 3 :(得分:0)
保证向量在C ++ 11中具有连续存储,并且在vc ++ 6.0到vc ++ 2012的平台中也是如此。