0

block[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最初のループの外側 (前) で vectorを宣言してから、 を使用する必要があります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 に答える
0

という変数がありませんblock。sにインデックスを付けたい場合はblock、それらもベクトルに入れます。

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

私はベクトルblock0、block1、block2を持っているので、forループで値がblock0/block1/block3に自動的に値を挿入するようにします

それ無理。上記の解決策を使用してください。

于 2013-08-10T18:38:23.510 に答える
-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 に答える