c++ - 在 C++ 中使用 for 循环遍历 vector

标签 c++

我正在阅读有关使用 SDL 进行操纵杆输入处理的教程,但我正在努力处理部分代码。

在 .h 文件中我得到:

std::vector<std::pair<Vector2D*, Vector2D*> > m_joystickValues;

在 .cpp 文件中我得到了:

m_joystickValues.push_back(std::make_pair(new Vector2D(0,0),new Vector2D(0,0)));

在这种情况下,我有一个操纵杆,如果有很多操纵杆,就会有更多的 push_backs,我想访问“m_joystickValues”中的地址,以便我可以在干净的函数中删除它们。

任何人都知道如何使用 for 循环执行此操作。谢谢

最佳答案

例如你可以使用基于范围的for语句

for ( auto &p : m_joystickValues )
{
   delete p.first;
   delete p.second;
}

同样可以使用普通的for语句来完成

for ( size_t i = 0; i < m_joystickValues.size(); i++ )
{
   delete m_joystickValues[i].first;
   delete m_joystickValues[i].second;
}

或者您可以使用标准算法 std::for_each 和适当的 lambda 表达式。它类似于使用带有迭代器的 for 语句。

关于c++ - 在 C++ 中使用 for 循环遍历 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25048396/

相关文章:

c++: std::endl 和操作符编译错误>>

c++ - 以自身为参数的抽象基类虚纯方法

c++ - 谷歌/基准测试结果不一致

c++ - 将代码复制到 RAM - 如何一次复制多个函数?

c++ - 在程序中创建一个值的界限

c++ - 为什么字符的大小只有 8 位?

c++ - 使用 placement new 创建指向静态内存缓冲区的静态 const 指针

.net - 如何在您自己的 C++ 项目中包含外部库?

c++ - 如何在不生成拷贝的情况下使用 getter 和 setter?

c++ - 原子 int 不正确地递增?英特尔 TBB 实现