我通常不确定什么时候使用一个比另一个更好。总的来说,它们似乎都在做同样的事情,但是向量在可以做什么方面更灵活吗?什么时候数组更合适?
问问题
15375 次
2 回答
16
通常总是更喜欢使用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 中修复的标准中的一个例外。
于 2012-06-02T21:01:31.163 回答
3
我只在使用嵌入式系统或某些 API 需要它时才真正使用数组(即,将它们作为函数的参数)。此外,如果只有一两个地方我需要使用数组,或者不需要特别需要向量功能,那么使用数组更有意义,因为 vector.h 的额外开销。
否则,只需使用向量:)
于 2012-06-02T21:00:19.020 回答