我注意到了MSVC 14 Comm上的奇怪行为(IMO)。在Debug x86解决方案中。 下面的代码抛出异常时,不包括vector :: resize。 注意:分配后一些实体可以通过传递nullptr来取消分配。MSVC 14 STL矢量储备
vector<Entity*> m_entities;
(...)
// find empty slot
u_int id = m_entities.size();
for(u_int i=0; i<m_entities.size(); ++i)
{
if(m_entities[i] == nullptr)
{
id = i;
break;
}
}
// vector realloc
if(id == m_entities.capacity())
{
u_int newSize = m_entities.capacity() * 2;
m_entities.reserve(newSize);
//m_entities.resize(newSize);
}
// assign
entity->m_id = id;
m_entities[id] = entity;
它看起来像运营商[]检查大小(),而不是能力() - 是吗?
是的,这是正确的。 –