【发布时间】:2015-06-04 19:56:22
【问题描述】:
我想以最有效和最简单的方式使用向量实现类似于下面提到的代码。我该怎么做?
int a[1005];
for(int i=1;i<=1000;i+=5)
a[i]=i*i;
当我尝试使用向量执行相同操作时,编译器会抛出 assertion failed error..subscript out of range...
vector<int> a;
for(int i=1;i<=1000;i+=5)
a[i]=i*i;
所以,我尝试了 pushback 功能...但是向量的索引只能从 0 增加到对 pushback 的调用次数,而不是我想要的方式,即 1、6、11、16
vector<int> a;
for(int i=1;i<=1000;i+=5)
a.pushback(i*i);
【问题讨论】:
-
vector.resize(sizeYouWant);编辑或vector<int> a(sizeYouWant); -
compiler throws assertion failed error- 不,此异常发生在运行时。 -
真的很期待心灵感应编译器。如果程序按照我的意愿行事而不是按照我的吩咐去做,我会少说脏话。
-
首先,您要解决什么问题(不提
vector)?如果要能够使用允许您添加项目的数据结构,而不管价值如何并且没有大小问题,那么解决方案可能是使用std::map<int,int>,而不是vector<int>。如果您使用std::map<int,int>,您的代码将无需任何更改(从vector<int>更改为std::map<int, int>除外)。
标签: c++ c algorithm c++11 vector