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' 这是什么意思,我该如何解决这个问题?

4

2 回答 2

8

你不能像那样直接编写代码。至少你需要一个main函数。您可能应该在函数中添加所有内容(包含除外)main

于 2012-07-26T23:26:59.810 回答
1

您缺少一个int main()功能。C++ 根本不允许将静态变量和声明以外的代码放在函数之外,因为不清楚代码何时应该实际运行。

一些注意事项:不要使用,当它是原始类型--(container.end())时,这可能最终成为未定义的行为。end使用std::prev(container.end()). 也尝试使用 thebeginendfree 函数,例如end(container). while不必要时不要使用循环进行迭代。使用for(auto& x : container)for(auto it = begin(container); it != end(container); ++it)。更好的是:使用 header 中的算法algorithm

于 2012-07-26T23:31:06.123 回答