1

获取指向所有 std::vector 元素的指针以便它可以像通常的数组一样使用的最佳(从代码可读性和语义)方法是什么?我曾经使用:

void Func( int* )

  ...

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

但我想知道有没有更漂亮的方法来做到这一点?x.begin() 返回向量::迭代器。

4

4 回答 4

7

x.data()在 C++11 或&x.front()C++03 中

于 2013-10-31T13:13:02.830 回答
2

除了 Dave 的答案,您可以省略括号:

int * xP = &x[0];

这真的很短。

于 2013-10-31T13:14:04.203 回答
0

在 C++11 以及从 vc++6.0 到 vc++ 2012 的平台中,向量保证具有连续存储。

于 2013-10-31T14:22:30.740 回答
0

你也可以这样写:int * xp = &x.front(),但是没有最优解,你写的所有东西都应该被编译器优化成相同的结果。

于 2013-10-31T13:14:18.987 回答