簡體   English   中英

vector.insert(...)是否會調用構造函數或賦值運算符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM