我通常不确定什么时候使用其中一种更好。一般来说,它们似乎都做同样的事情,但就其功能而言,向量是否更灵活?什么时候数组比较合适?
通常总是更喜欢使用std::vector<T>
因为一旦向量超出范围,销毁就会自动进行,分配的内存将整齐地放置在堆上,并且所有内存都将为您处理。std::vector<T>
为您提供数组中获得的所有内容,甚至保证元素将连续存储在内存中(除了std::vector<bool>
).
如果是std::vector<bool>
你必须小心,因为这样的代码会崩溃:
std::vector<bool> vb;
vb.push_back(true);
vb.push_back(false);
vb.push_back(true);
bool *pB = &vb[0];
if( *(pB+1) )
{
// do something
}
事实是,std::vector<bool>
不存储连续的bool
s。这是标准中的一个例外,已在 C++11 中修复。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)