C++ (C+;+;)可以';无法让deque insert()工作,我做错了什么?

C++ (C+;+;)可以';无法让deque insert()工作,我做错了什么?,c++,insert,deque,C++,Insert,Deque,这里的insert()部分出现错误,我不知道我做错了什么。我尝试了不同的参数和数量的参数,但似乎没有任何效果 m_oGameObjectList是IGameObjects(基类)的一个名称。 m_位置是一个包含3个整数(X,Y,Z)的结构。 gameObject是对源自IGameObject的对象的引用 for (int i = 0; i < m_oGameObjectList.size(); i++) { if (gameObject.m_sPosition.Z > m_o

这里的
insert()
部分出现错误,我不知道我做错了什么。我尝试了不同的参数和数量的参数,但似乎没有任何效果

m_oGameObjectList
是IGameObjects(基类)的一个名称。
m_位置
是一个包含3个整数(X,Y,Z)的结构。
gameObject
是对源自
IGameObject
的对象的引用

for (int i = 0; i < m_oGameObjectList.size(); i++)
{
    if (gameObject.m_sPosition.Z > m_oGameObjectList[i].m_sPosition.Z)
    {
        m_oGameObjectList.insert(i, gameObject);
        i = m_oGameObjectList.size();
    }
}
for(int i=0;im_oGameObjectList[i].m_sPosition.Z)
{
m_oGameObjectList.插入(i,游戏对象);
i=m_oGameObjectList.size();
}
}

插入
使用一个
迭代器
。使用:

m_oGameObjectList.insert(m_oGameObjectList.begin() + i, gameObject);

您还需要在
deque
中使用指针,现在您正在切片-插入
gameObject
IGameObject
部分的副本
insert
需要一个
迭代器。使用:

m_oGameObjectList.insert(m_oGameObjectList.begin() + i, gameObject);

您还需要在您的
deque
中使用指针,现在您正在切片-插入
gameObject
部分的
IGameObject
副本尝试将从IGameObject派生的对象插入deque将不起作用,因为deque正在尝试将对象的副本存储在引用中,而不是引用本身


大多数情况下,如果您试图将类层次结构存储到容器中,那么您可以通过将指向基类的指针容器来实现。尝试将从IGameObject派生的对象插入deque将不起作用,因为deque试图将对象的副本存储在引用中,而不是引用本身


大多数情况下,如果您试图将类层次结构存储到容器中,您可以使用指向基类的指针容器来实现这一点。

insert
的调用应该将迭代器(而不是整数索引)传递到deque中。将整数索引转换为deque迭代器的一种方法是:

my_deque_iterator iter = m_oGameObjectList.begin();
std::advance(m_oGameObjectList, i);
。。。尽管还有其他几种同样有效的解决方案


您还可以使用诸如
push_back
push_front
之类的deque函数,它们分别将要放置在deque前面或后面的对象作为对象。

insert
的调用应该将迭代器(而不是整数索引)传递到deque中。将整数索引转换为deque迭代器的一种方法是:

my_deque_iterator iter = m_oGameObjectList.begin();
std::advance(m_oGameObjectList, i);
。。。尽管还有其他几种同样有效的解决方案

您还可以使用像
push_back
push_front
这样的deque函数,它们分别只取要放在deque前面或后面的对象