还是老样子,如果有错或者任何问题,请大家多指正。
C++中的vector的一个问题是它会预留一部份空间以避免vector在内存里的拷贝,这固然提高了如push_back函数的效率,但同时也浪费了大量空间,这使得在graph中通常不便使用vector来存储数据,而是用list.
那么有没有办法使vector的capacity恰好等于它的size呢?我在C++ documentation中并没有看到关于reserve(num) num < capacity的解释,于是写了如下简单的代码。
int main()
{
vector<int> a;
for(int i=0; i < 100; ++i)
a.push_back(i);
a.reserve(100);
cout << a.capacity() << endl;
}
结果显示为128(gcc 4.5.2), 说明gcc的reserve在这种情况下是不起任何作用的。
C++中的vector的一个问题是它会预留一部份空间以避免vector在内存里的拷贝,这固然提高了如push_back函数的效率,但同时也浪费了大量空间,这使得在graph中通常不便使用vector来存储数据,而是用list.
那么有没有办法使vector的capacity恰好等于它的size呢?我在C++ documentation中并没有看到关于reserve(num) num < capacity的解释,于是写了如下简单的代码。
int main()
{
vector<int> a;
for(int i=0; i < 100; ++i)
a.push_back(i);
a.reserve(100);
cout << a.capacity() << endl;
}
结果显示为128(gcc 4.5.2), 说明gcc的reserve在这种情况下是不起任何作用的。