如何通过向量构建数组



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

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

以下是我的问题:

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

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

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

完成后,您就有了"数组",甚至不必复制数据......

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

旁注:标准保证矢量的内容是连续的,因此您在迭代"数组"时不会遇到任何麻烦。

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

最新更新