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前面或后面的对象