首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Can't push_back a object with a std::vector to a std::vector

在C++中,std::vector是一种动态数组的容器,可以存储各种类型的对象。但是,无法直接将一个std::vector对象推入另一个std::vector中。需要使用std::vector的成员函数insert或emplace_back来实现。

具体来说,push_back是用于将一个对象添加到std::vector的末尾的函数,但是它只接受一个对象作为参数,而不能接受另一个std::vector作为参数。

如果想要将一个std::vector对象中的元素推入到另一个std::vector中,可以使用insert或emplace_back函数。

  1. 使用insert函数:
代码语言:txt
复制
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5, 6};
vec1.insert(vec1.end(), vec2.begin(), vec2.end());

上述代码将vec2中的元素插入到vec1的末尾,使用insert函数需要指定插入位置和插入范围。

  1. 使用emplace_back函数:
代码语言:txt
复制
std::vector<std::vector<int>> vec1 = {{1, 2, 3}, {4, 5, 6}};
std::vector<std::vector<int>> vec2 = {{7, 8, 9}, {10, 11, 12}};
vec1.emplace_back(vec2[0]);

上述代码将vec2中的第一个元素推入到vec1的末尾,使用emplace_back函数可以直接将元素插入到std::vector的末尾,而不需要指定插入位置。

总结: 不能直接将一个std::vector对象推入另一个std::vector中,但可以使用insert或emplace_back函数将其中的元素推入另一个std::vector中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 从零开始学C++之STL(二):实现简单容器模板类Vec(vector capacity 增长问题、allocator 内存分配器)

    const T *const_iterator;     typedef size_t size_type;     typedef T value_type;     typedef std::ptrdiff_t... their left operand is different(const), we can overload the operation */     const T &operator[](size_type...为了理解push_back 的工作原理,写个小程序测试一下: #include  #include "Vec.h" using namespace std; class Test...第三次调用push_back,也一样分配三块内存,将t1, t2 拷贝下来,然后分别析构,最后将t3 拷贝上去。...输出的次数是一致的,只是拷贝的顺序有所不同而已,比如第二次调用push_back 的时候,VC2008 中的vector 是先拷贝t2, 接着拷 贝t1, 然后将t1 释放掉。

    1.4K00

    《C++ 中用 std::vector 打造动态增长二维数组:技巧与应用全解》

    std::vector 的基本特性与优势 std::vector 是 C++ 标准模板库(STL)中的一个容器类。它具有很多优秀的特性,使得它非常适合用来构建动态数据结构。...构建动态增长二维数组的思路 要使用 std::vector 创建动态增长的二维数组,我们可以把二维数组看作是一个包含多个 std::vector 的 std::vector 。...也就是说,外层的 std::vector 的每个元素都是一个内层的 std::vector ,代表二维数组的一行。...当我们需要增加行数时,只需要在外层 std::vector 中添加一个新的内层 std::vector ;当需要增加列数时,就在相应的内层 std::vector 中添加元素。...如果用户添加了一行,我们就在外层 std::vector 中插入一个新的内层 std::vector ;如果用户添加了一列,我们就在每个内层 std::vector 中添加一个新的元素。

    28210

    从零开始学C++之对象语义与值语义、资源管理(RAII、资源所有权)、模拟实现auto_ptr、实现Ptr_vector

    _ #include vector> #include  template T> class ptr_vector : public std::vectorT...    void push_back(T *const &val)     {         std::auto_ptrT> ptr(val);              // 用auto_ptr...接管val所有权         std::vectorT *>::push_back(val);       // operator new         ptr.release();     }...    void push_back(std::auto_ptrT> &val)     {         std::vectorT *>::push_back(val.get());         ...,如果 std::vectorT *>::push_back(val);  成功(operator new 成功),那么局部智能指针对象释放裸指针的所有权;如果 std::vectorT *>:

    1.8K00
    领券