我想通过for循环中的列表进行操作并执行以下操作:
list<my_object> my_list;
for(int x = 0; x < my_list.size(); x++){
my_object tempObject = (my_list.back() - x);
//more actions...
}
但即使http://www.cplusplus.com/reference/stl/list/back/显示并使用“ - ”运算符和“back()”函数的示例,Visual C ++告诉我“没有运算符” - “匹配这些操作数”...... < / p>
我几天前开始使用c ++而且我不知道从哪里开始..是否有可能以这种方式通过列表?
答案 0 :(得分:1)
迭代列表的适当方法是使用迭代器:
list<my_object> my_list;
for (list<my_object>::iterator i(my_list.begin()), end(my_list.end()); i!=end; ++i) {
my_object tempObject = *i;
//more actions...
}
在C ++ 11中使用迭代器:
for (auto i = begin(my_list), end = end(my_list); i!=end(); ++i) {
my_object tempObject = *i;
//more actions...
}
您可以使用基于C ++ 11范围的循环:
for (my_object tempObject : my_list) {
//more actions...
}
或者,如果恰好有STL样式算法模板已经执行了“更多操作”:
more_actions(begin(my_list),end(my_list));
答案 1 :(得分:1)
在示例中,您链接到列表中的元素是int
,这就是它在那里工作的原因。您要做的是从my_object
的实例中减去一个整数。没有内置函数来执行此操作,但如果有函数operator-(my_object &lhs, int rhs)
则可以。