C++ 11 STL 列表 = 和 != op 未定义

标签 c++ list stl

我正在尝试使用 C++ 列表 ADT,但我似乎无法使迭代器或调用正常工作。我不知道如何从数组初始化新列表,而且我不断收到错误消息,即未为迭代器定义 = 和 != 运算符。这段代码是基于一个 friend 的作业(我试图向他展示他可以通过使用列表来改进他的代码)。除了变量声明和引发错误的代码部分,我已经删除了所有逻辑。

#include <list>

using namespace std;

const static char *dias[] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"};

//Don't know how to initialize list from array
const static list<char *> DIAS (7);

int main (int argc, char *argv[]) {
    list<char *>::iterator iter;

        //ERROR HERE. Says = and != operator not defined for iterator iter.            
    for(iter = DIAS.begin(); iter != DIAS.end(); ++iter){
    }

    return 0;
}

我的代码基于以下位置的示例代码和文档:http://www.cplusplus.com/reference/list/list/list/

最佳答案

你的列表是const,所以你需要一个const_iterator:

list<char *>::const_iterator iter;

在 C++11 中,您可以通过对代码进行简单修改来避免此问题:

for(auto iter = DIAS.begin(), end = DIAS.end(); iter != end; ++iter){ ... }

至于列表初始化,C++11允许你这样做:

static const std::list<const char*> DIAS{"Domingo", "Lunes", "Martes", "Miercoles", 
                                         "Jueves", "Viernes", "Sabado"};

请注意,类型应为 const char*,因为元素指向字符串文字。

关于C++ 11 STL 列表 = 和 != op 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16426410/

相关文章:

c++ - 如何从堆栈中找到崩溃的代码行?

python - 将两个单独的列表附加到列表列表

c++ - 如何在 Windows 内核中使用 std::map? STL端口?

c++ - Boost - unordered_set 教程/示例/任何东西?

c++ - 为什么 STL map 不起作用?

c++ - 使用结构中的成员进行动态分配

c++ - 将 C++ 字符串与 C 库函数一起使用

c++ - 如何在 UML 类图中显示私有(private)继承关系

c++ - 如何删除 list<T> 中动态分配的类对象?

用于项目列表的 Python,到单个字符串?