1

次のコードで文字列リストを反復処理しようとしています:

#include<cstdlib>
#include<string>
#include<list>

using namespace std;

list<string> dict = {"aardvark", "ambulance", "canticle", "consumerism"};
list<string> bWords = {"bathos", "balderdash"};
//splice the bWords list into the appropriate spot in dict
auto iterLastB = --(bWords.end());
//find spot in dict
list<string>::iterator it = dict.begin();
while(it != dict.end()){
  if(*it > *iterLastB)
    break;
    ++it;
}
dict.splice(it, bWords);

ただし、これをビルドするexpected unqualified-id before 'while' と、What does this mean and how can I fix the problem?というエラーが表示されます。

4

2 に答える 2

8

そのように直接コードを書くことはできません。最低限、機能は必要ですmain。おそらく、(インクルードを除く) すべてをmain関数に追加する必要があります。

于 2012-07-26T23:26:59.810 に答える
1

関数がありませんint main()。C ++では、静的変数と宣言以外のコードを関数の外部に配置することはできません。コードを実際に実行するタイミングが不明確になるためです。

いくつかの注意事項:を使用しないでください。がプリミティブ型の--(container.end())場合、これは未定義の動作になる可能性があります。endを使用しstd::prev(container.end())ます。beginおよびendfree関数も使用してみてくださいend(container)while不要な場合は、ループを繰り返さないでください。for(auto& x : container)またはを使用しfor(auto it = begin(container); it != end(container); ++it)ます。さらに良い方法:ヘッダーのアルゴリズムを使用しますalgorithm

于 2012-07-26T23:31:06.123 に答える