0

似乎我对块 [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

4 回答 4

0

你没有变量叫做block. 如果你想索引你block的 s,也把它们放在一个向量中:

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

我有向量块0,块1,块2,所以在for循环中我希望值自动将值插入块0/块1/块3

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

于 2013-08-10T18:38:23.510 回答
0

您正在block第一个循环中创建变量,并且它们在每个循环终止后消失。

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

于 2013-08-10T18:53:58.603 回答
0

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

std::vector<std::string> block[3];             // c++03
std::array<std::vector<std::string>,3> block;  // c++11
于 2013-08-10T18:46:50.987 回答
-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);
于 2013-08-10T18:43:04.067 回答