c++ - 用另一个const std::vector和其他值创建一个const std::vector

标签 c++ vector stl std

考虑一个const vector v1

const std::vector<int> v1{0, 1, 2, 3, 4};

我想用新的常量v2的内容和其他值创建一个新的const vector v1:
const std::vector<int> v1{0, 1, 2, 3, 4};
const std::vector<int> v2{v1, 5, 6, 7, 8, 9};

我该怎么办?

最佳答案

考虑以下便利功能模板make_vector():

template<typename T>
std::vector<T> make_vector(const std::vector<T>& v, std::initializer_list<T> l) {
   std::vector<T> u(v);
   u.insert(u.end(), l.begin(), l.end());
   return u;
}

它创建一个临时 vector u,其中包含传递给函数的 vector 元素和initializer_list的元素。

请注意,对于便利函数来说,按值返回const对象通常毫无意义(例如,返回的对象无法移动)。因此,上面的便捷函数会返回非const vector ,即std::vector<T>。但是,您可以使用此返回的非const vector 初始化const vector ,并将其进行移动初始化。
auto main() -> int {
   const std::vector<int> u{1, 2, 3};
   auto const v = make_vector(u, {4, 5, 6});

   for (auto elem: v)
      std::cout << elem << ' ';
   std::cout << '\n';
}

输出:
1 2 3 4 5 6 

关于c++ - 用另一个const std::vector和其他值创建一个const std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59078998/

相关文章:

c++ - 发布和调试之间的不同输出

jsp - 矢量: References to generic type Vector<E> should be parameterized

c++ - 引用 STL map 元素的值?

c++ - 我们应该更喜欢 vector<unique_ptr<>> 还是 boost::ptr_vector

C++ 映射访问丢弃限定符 (const)

c++ - 为什么我的 window 功能无法消除谐波?

c++ - "normal"数据到底是什么?(direct3d 11,c++)

c++ - 将参数传递给父类(super class)构造函数

r - 矩阵和向量形式的数据点数量

c++ - 是否有可能在 c++ ex : vector<int>func (const vector<int>&v) {}? 中的函数 func(say) 中交换作为参数传递的 const vector 的两个元素