C++ 11 vector 构造函数复制与范围?

标签 c++ c++11 vector constructor

我无法理解 vector 复制构造函数和范围构造函数的优点或区别。当我像这样构造三个 vector 时:

    vector<int> FirstVec(3, 911); //fill constructor
    vector<int> SecondVec(FirstVec.begin(), FirstVec.end()); //range constructor
    vector<int> ThirdVec(FirstVec); //copy constructor

SecondVecThirdVec的内容完全一样。在任何情况下使用其中之一有优势吗?谢谢。

最佳答案

当您想要复制不同类型容器的项目,或者不想复制整个范围时,范围构造函数非常有用。例如

int a[] = {1,2,3,4,5};
std::set<int> s{3, 911};
std::vector<int> v0{1,2,3,4,5};

std::vector<int> v1(std::begin(a), std::end(a));
std::vector<int> v2(a+1, a+3);
std::vector<int> v3(s.begin(), s.end());
vector<int> v4(v0.begin(), v0.begin() + 3);

关于C++ 11 vector 构造函数复制与范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30121228/

相关文章:

linux - 将缓冲区或 C 字符串复制到 std::string 的最快方法

c++ - 引用类型和文字类型

c++ - 如果没有插入而只有 .find(),在多线程上使用 C++ STL 容器是否安全?

c - 在 C 中创建标量乘法函数

c++ - 异常规范的评估点

c++ - 模板参数列表中的额外 typename 关键字 : is it valid or not?

c++ - 应该使用 std::stof 和 atof 之间的区别是什么?

c++ - 将多个数组槽设置为一个值的更简单方法

c++ - 在 C++ 中初始化二维 vector

c++ - 修改指针值