c++ - Iterating over list of structs -
i'm creating list of structs:
struct task{ int task_id; bool is_done; char* buffer; int length; } task; list<task> tasklist; and trying iterate on tasks in order check is_done status:
(std::list<task>::const_iterator iterator = tasklist.begin(), end = tasklist.end(); iterator != end; ++iterator) { if(iterator->is_done) { return 1; } else { return 2; } } where wrong? get: missing template argument before '->' token
the iterator's operator-> dereferencing already. instead of
if(*iterator->is_done==true) you need
if(iterator->is_done==true) is equivalent to
if((*iterator).is_done==true) which sidenote equivalent easier read
if((*iterator).is_done) or
if(iterator->is_done) . better, use std::any_of:
#include <algorithm> .... if (any_of(begin(tasklist), end(tasklist), [](task const &t) { return t.is_done; })) { return 1; } else { return 2; } informal note: there no need qualify any_of, begin , end std::, because tasklist of type std::list<?>, , c++-compiler functions in std-namespace already.
Comments
Post a Comment