如何创建一组 deques
How can I create an array of deques?
我定义了很多deques,当我需要做一些事情,比如擦除或弹出所有这些deque时,我只需要专门对每个deque都这样做。我认为可以简化的是将deques放在某种数组或列表中,我可以循环浏览。
我想做的是这样的(基本上只是伪代码):
deque<f32> pos, vel, rot, prop;
deque deques[] = {pos, vel, rot, prop};
for(i=0; i<deques.length; i++) deques[i].pop_back();
(但它不起作用)
这里声明一个简单的非托管数组:
deque deques[] = {pos, vel, rot, prop};
。但是您忘记声明其内容的完整专业类型,这应该deque<f32>
而不仅仅是赤裸裸的deque
.
现在,您尝试遍历数组,
for(i=0; i<deques.length; i++) deques[i].pop_back();
。但是简单的 C 样式数组没有像 length
这样的方法。您似乎在尝试编写 C#,而不是C++!
试试这个:
std::array<std::deque<float>, 4> deques = { pos, vel, rot, prop };
for(auto i=0; i<deques.size(); i++) deques[i].push_back(1.0f);
等。
std::vector<std::deque<f32>> array;
std::deque pos, vel, rot, prop;
array.push_back(pos);
array.push_back(vel);
array.push_back(rot);
array.push_back(prop);
如果您的 comiler 支持 C++11 功能,则std::vector
的替代方法是std::array
:
std::array<std::deque<f32>, 4> deques;
std::for_each(deques.begin(),
deques.end(),
[](const std::deque<f32>& a_d)
{
std::cout << a_d.size() << "n";
});
如果没有,您可以按照前面所述使用std::vector
。要使用初始deque<f32>
元素创建std::vector
:
std::vector<std::deque<f32> > deques(4); // 4 empty deque<f32>s
for (std::vector<std::deque<f32> >::iterator i = deques.begin();
i != deques.end();
i++)
{
std::cout << i->size() << "n";
}
相关文章:
- 在 c++ 中拥有一组结构的正确方法是什么?
- 有哪些有效的方法可以消除一组 100 万个字符串>重复数据?
- 程序以使用 C++ 中的 while 循环查找一组数字的最小值
- 一组值的零开销下标运算符
- 使用一组结构,避免在一组结构中出现重复的结构
- CMake:我们可以为一组不形成可执行文件或库的特定文件指定包含目录吗?
- 合并一组模板专用化
- 如何更好地检查两个 char 变量是否在一组值中?
- C++有没有办法强制重写一组方法,如果其中一个方法在子类中具有重写?
- 给定一个枢轴点,按照它们与枢轴点构成的角度递增顺序对一组点进行排序
- 如何从一组变量中查找最低值
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何通过查找迭代器结果分配给一组对的元素
- 读取一组用户输入,按升序排序,然后打印结果
- 如何从一组具有从左到右优先级的整数值创建有序整数键?
- 在 c++ 中定义一组 set 的迭代器
- 使用 C++20 概念强制类实现一组方法
- 这是定义一组递归规则的正确方法吗?
- C++ 将一组对象传递给抽象类的成员函数
- 如何创建一组 deques