指向所有std :: vector元素的指针

时间:2013-10-31 13:10:08

标签: c++ arrays std c++03

获取指向所有std :: vector元素的指针的最佳方式(从代码可读性和语义)是什么,因此它可以用作通常的数组?我以前用过:

void Func( int* )

  ...

std::vector<int> x(1000);
Func(&(x[0]));

但我想知道有没有更漂亮的方法呢? x.begin()返回vector :: iterator。

4 个答案:

答案 0 :(得分:7)

C ++ 11中的

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的平台中也是如此。