我想编写一个函数来创建一个带有已查看向量的数组。 如
int foo(vector<int> &A){
int N=A.size();
int myarray[N]={0}; //here is an error
}
以下是我的问题:
vector::size()
不返回const值吗?const
修改表达式不起作用N
仍为变量。答案 0 :(得分:2)
我不明白为什么你需要创建一个数组。如果将数组传递到函数中的任何位置,则会将指针传递给此类数组。但是你可以轻松地将向量的内部数据作为这样一个指针:
std::vector<int> v({1, 2, 3, 4});
int* values = v.data();
完成,你有#34;数组&#34;,你甚至不必复制数据......
如果您仍需要副本,只需复制矢量本身。
附注:该矢量的内容由标准保证是连续的,因此您不会遇到任何麻烦迭代您的&#34;阵列&#34;。
但是,实际存在一个问题:如果要存储指向数组内容的指针,如果向向量中添加更多元素,它们可能会失效,因为它可能会重新分配其内容。请注意这一点! (实际上,就像你因任何原因需要创建一个新数组一样......)