这里的目标是创建一个向量向量,每个向量包含不同大小的向量,即100,200,400,800,1600,3200,6400和12800.这是我的代码:
void vectorGenerator() {
int i;
vector<int> vectorList;
for (unsigned int j = 0; j < 8; j++) {
vector<int> temp(100*pow(2,i));
for (unsigned int l = 0; l<temp.size(); l++)
temp(l) = (rand() % 20000);
vectorList.push_back(temp);
}
我得到的错误来自这条线:
temp(l) = (rand() % 20000);
我收到的错误消息是
错误:无法调用'(std :: vector)(unsigned int&amp;)'
在下一行显示
时出现错误错误:没有匹配函数来调用'std :: vector :: push_back(std :: vector&amp;)'
我只是需要一些帮助来试图弄清楚如何解决这些错误。我用谷歌搜索了错误信息,但没有真正有用。
答案 0 :(得分:5)
首先,使用数组表示法访问向量的元素,即使用方括号。这意味着
temp(l) = (rand() % 20000);
应该是
temp[l] = (rand() % 20000);
此外,你说你想要一个向量向量,所以你应该将vectorList
声明为:
vector<int> vectorList;
应该是
vector<vector<int>> vectorList;
编译器告诉你:你说vectorList
是int
的向量,但是如果你仔细阅读了错误信息,它说你试图用push_back
来调用std::vector&
。
最后,你似乎没有对结果做任何事情......你的意思是你的函数返回一个值吗?