c++ - vector.insert(...) 调用构造函数还是赋值运算符?

标签 c++ vector constructor

我有一个 vector ,其元素类型为A 类。类 A 具有显式定义的复制构造函数,但复制运算符已设为私有(private)且未定义(不打算使用)。如果我将新元素插入到 vector 中,如下所示

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?

我收到一条错误消息,提示复制运算符是私有(private)的。但 vector 不应该使用复制构造函数吗?

最佳答案

vector 确实对插入的元素使用了复制构造函数。然而,vector 内部仍然需要赋值运算符,这符合 vector 类型可赋值的要求。我相信 C++11 现在只需要移动赋值。

关于c++ - vector.insert(...) 调用构造函数还是赋值运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7855563/

相关文章:

c# - C# 中带参数的 'UserControl' 构造函数

C# 子类最佳实践

c++ - 当可移植性很重要时,使用 C++ 0x/TR1 是否安全?

c++ - 为什么 (1 < 1 < 1) 在 C++ 中返回 true?

R - 简洁地将向量添加到每个向量元素

java - (java) 设置 vector 的大小

java - 如果两条线使用叉积相交

node.js - 类型错误 : Socket is not a constructor

c++ - 从常量函数返回引用

c++ - 帮助解决几何问题 - 不知道