如何通过向量构建数组?

时间:2018-03-12 11:45:57

标签: c++ c++11

我想编写一个函数来创建一个带有已查看向量的数组。 如

int foo(vector<int> &A){
    int N=A.size();
    int myarray[N]={0}; //here is an error
}

以下是我的问题:

  1. 我知道构建数组必须使用const值,但vector::size()不返回const值吗?
  2. 使用const修改表达式不起作用N仍为变量。

1 个答案:

答案 0 :(得分:2)

我不明白为什么你需要创建一个数组。如果将数组传递到函数中的任何位置,则会将指针传递给此类数组。但是你可以轻松地将向量的内部数据作为这样一个指针:

std::vector<int> v({1, 2, 3, 4});
int* values = v.data();

完成,你有#34;数组&#34;,你甚至不必复制数据......

如果您仍需要副本,只需复制矢量本身。

附注:该矢量的内容由标准保证是连续的,因此您不会遇到任何麻烦迭代您的&#34;阵列&#34;。

但是,实际存在一个问题:如果要存储指向数组内容的指针,如果向向量中添加更多元素,它们可能会失效,因为它可能会重新分配其内容。请注意这一点! (实际上,就像你因任何原因需要创建一个新数组一样......)