gpt4 book ai didi

c++ - 迭代结构列表

转载 作者:行者123 更新时间:2023-11-30 02:55:33 26 4
gpt4 key购买 nike

我正在创建一个结构列表:

struct task{
int task_id;
bool is_done;
char* buffer;
int length;

} task;
list<task> taskList;

并尝试遍历任务以检查 is_done 状态:

    for (std::list<task>::const_iterator iterator = taskList.begin(), end = taskList.end(); iterator != end; ++iterator) {

if(iterator->is_done) {
return 1;
} else {
return 2;
}
}

我哪里错了?我得到:“->”标记前缺少模板参数

最佳答案

迭代器的 operator->已经取消引用了。所以不是

if(*iterator->is_done==true)

你需要

if(iterator->is_done==true)

相当于

if((*iterator).is_done==true)

作为旁注相当于更容易阅读

if((*iterator).is_done)

if(iterator->is_done)

.更好的是,您还可以使用 std::any_of :

#include <algorithm>

....

if (any_of(begin(taskList), end(taskList),
[](task const &t) { return t.is_done; }))
{
return 1;
} else {
return 2;
}

非正式说明:不需要限定any_of , beginendstd:: ,因为 taskList类型为 std::list<?> ,C++ 编译器将在 std 中查找这些函数-已经为您命名空间。

关于c++ - 迭代结构列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372450/

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