如何创建一组 deques

How can I create an array of deques?

本文关键字:deques 一组 创建 何创建      更新时间:2023-10-16

我定义了很多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";
}