似乎我遇到了阻止[i]的问题,我该如何解决这个问题?
for(int i=0;i<range.size();i++)
{
vector <string> block(i);
}
for(int i=0; i<range.size();i++)
{
int counter=1;
if(range[counter] == block[i])
{
block[i].push_back(range[counter-1]); <<<<<<<< ERROR: No match for call
counter++;
}
}
答案 0 :(得分:0)
您没有名为block
的变量。如果您想为block
编制索引,请将它们放在矢量中:
vector<vector<string>> blocks (3);
我有vector block0,block1,block2,所以在for循环中我希望值自动将值插入block0 / block1 / block3
那是不可能的。使用上面的解决方案。
答案 1 :(得分:0)
如果块的编号是编译时常量,则可能需要考虑一个数组:
std::vector<std::string> block[3]; // c++03
std::array<std::vector<std::string>,3> block; // c++11
答案 2 :(得分:0)
您正在第一个循环中创建block
个变量,并在每个循环终止后消失。
您需要在第一个循环之外(之前)声明block
向量,然后使用push_back
。
答案 3 :(得分:-1)
这就是如何创建矢量矢量的方法,如果你想索引你的矢量需要什么:
vector<vector<string> > vec3(3, std::vector<string>());
或
std::array<std::vector<std::string>,3> block; // in case of c++11
或
vector<vector<string> > blocks (3);