gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 15:46:04 24 4
gpt4 key购买 nike

我正在尝试使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com