[英]Does vector.insert(…) call the constructor or the assignment operator?
我有一個類型為class A
元素的向量。 類A
有明確定義的拷貝構造函數,但復制操作已經取得了私人和不確定的(而不是指使用)。 如果我將新元素插入到矢量中,如下所示
A walker; //This calls the default constructor.
std::vector< A > vec;
std::vector< A >::iterator it = vec.begin();
vec.insert( it, walker ); //Shouldn't this call the copy constructor?
我收到一個錯誤,抱怨復制操作符是私有的。 但是不應該使用復制構造函數嗎?
vector
確實使用了插入元素的復制構造函數。 但是, vector
仍然需要內部的賦值運算符,在可以賦值的vector
類型的requeriments中。 我相信C ++ 11現在只需要移動分配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.