C++ 使用 "-"操作数和 list.back()

标签 c++ list operator-overloading

我想在 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));

关于C++ 使用 "-"操作数和 list.back(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11173647/

相关文章:

c++ - 我怎样才能并行化这个求解器代码

c++ - 从 C++ 中的函数返回 vector 的最佳方法是什么

.net - 通用列表匹配任何值

python - python中的映射方法

c++ - 使用动态内存的集合并集

c++ - 在使用带有 https 的 url 时,我遇到了 Casablanca C++ 的问题

c++ - Eclipse 卡住长文件中的打开声明

algorithm - 复制带有 next 和随机指针的链表,只给链表上的读权限

c++ - 转换运算符问题

c++ - 在 C++ 中重载 << 运算符