我一直在尋找一段時間,但我找不到明確的解釋我的疑惑。 主要是:向量移動語義C++ 11
struct foo
{
foo(int n=0) : m_n(n) {}
int m_n;
};
std::vector<foo> vec;
vec.push_back(100);
vec.push_back(55);
vec.push_back(6);
std::cout << vec.data() << std::endl; //0x1aca010
std::cout << vec.capacity() << std::endl; //4
vec.push_back(6);
vec.push_back(6);
std::cout << vec.data() << std::endl; //0x1aca050 *
std::cout << vec.capacity(); //8
*據我所知的載體是一個動態數組,它包含在存儲器中的一個連續的塊中的數據。當我們調整它的大小並且沒有足夠空間存儲更多元素時,將分配新的內存塊並將所有元素都複製到該內存中。它是否與C++ 11中的移動語義相同?這不是一個列表,所以指針不能只是「交換」。
這裏沒有移動操作,在C++ 11中它應該以相同的方式工作。 – 2014-09-02 09:47:43