C++ 将"-"操作数与 list.back() 一起使用

C++ using "-" operand together with list.back()

本文关键字:一起 back list 操作数 C++      更新时间:2023-10-16

我想在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++ 告诉我"没有运算符 "-" 与这些操作数匹配"......

我几天前开始了c ++,我不知道从这里开始。甚至有可能以这种方式浏览列表吗?

循环访问列表的适当方法是使用迭代器:

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 循环:

for (my_object tempObject : my_list) {
   //more actions...
}

或者,如果碰巧有一个 STL 样式算法模板已经执行了您的"更多操作":

more_actions(begin(my_list),end(my_list));

在示例中,您链接到列表中的元素是一个int这就是它在那里工作的原因。您要做的是从 my_object 的实例中减去一个整数。没有内置函数来执行此操作,但如果有一个函数operator-(my_object &lhs, int rhs)那么这是可能的。