使用矢量无法匹配呼叫

时间:2013-08-10 18:36:14

标签: c++

似乎我遇到了阻止[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++;
    } 
    }

4 个答案:

答案 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);