不匹配使用矢量的调用

No match for call using vector

本文关键字:调用 不匹配      更新时间:2023-10-16

我似乎有块[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++;
    } 
    }

您没有名为block的变量。如果你想索引你的block,也把它们放在一个向量中:

vector<vector<string>> blocks (3);

我有矢量block0,block1,block2,所以在for循环中,我希望该值自动插入block0/block1/block3

这是不可能的。使用上面的解决方案。

如果块的数量是编译时常数,您可能需要考虑一个数组:

std::vector<std::string> block[3];             // c++03
std::array<std::vector<std::string>,3> block;  // c++11

您在第一个循环中创建block变量,每个循环结束后这些变量就会消失。

您需要在第一个循环之外(之前)声明block向量,然后使用push_back

这就是创建矢量的方法,如果你想索引矢量,需要什么:

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