我想知道爲什麼矢量模板執行兩個分配,當只有一個似乎是 必要的。STL向量分配
例如這樣的:
#include <vector>
#include <iostream>
class A {
public:
A(const A &a) {
std::cout << "Calling copy constructor " << this << " " << &a << "\n";
}
A() {
std::cout << "Calling default constructor " << this << "\n";
}
~A() {
std::cout << "Calling destructor " << this << "\n";
}
};
int main(int argc, char **argv)
{
std::vector <A> Avec;
std::cout << "resize start\n";
Avec.resize(1);
std::cout << "resize end\n";
return 0;
}
輸出:
resize start Calling default constructor 0x7fff9a34191f Calling copy constructor 0x1569010 0x7fff9a34191f Calling destructor 0x7fff9a34191f resize end
我認爲這將會產生兩個分配: - 一個用於新的A() - 一個用於push_back()的副本 – ynimous 2009-06-17 15:14:43