Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用另一个const std::vector和其他值创建一个const std::vector_C++_Vector_Stl_Std - Fatal编程技术网

C++ 使用另一个const std::vector和其他值创建一个const std::vector

C++ 使用另一个const std::vector和其他值创建一个const std::vector,c++,vector,stl,std,C++,Vector,Stl,Std,考虑常数向量v1 const std::vector<int> v1{0, 1, 2, 3, 4}; 我如何才能做到这一点?考虑以下方便函数模板,make_vector(): 输出: 1 2 3 4 5 6 创建一个临时向量,构建它的内容,然后使用它来构建v2。或者,定义并实现一个自定义迭代器类,该类迭代v1的所有内容和新值,然后使用std::vector构造函数,这是一个模板,它接受一个由开始迭代器和结束迭代器定义的序列。我目前有一个函数,它将v1和附加值组合在一起,并返回一

考虑常数向量
v1

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

我如何才能做到这一点?

考虑以下方便函数模板,
make_vector()

输出:

1 2 3 4 5 6 

创建一个临时向量,构建它的内容,然后使用它来构建
v2
。或者,定义并实现一个自定义迭代器类,该类迭代
v1
的所有内容和新值,然后使用
std::vector
构造函数,这是一个模板,它接受一个由开始迭代器和结束迭代器定义的序列。我目前有一个函数,它将
v1
和附加值组合在一起,并返回一个新的向量进行构造,但是我想问是否有一个更优雅的解决方案来解决这个问题。C++库中没有任何东西。这也是我的猜测,但是我不太确信为什么我确信C++库中没有类似的东西,因为这样的事情只能用两种方式来完成。1) 一个专用的向量构造函数,我很确定没有;2)C++语言的语法和句法的基本部分,我很肯定是不存在的。没有其他的可能性。谢谢你花时间回答这个问题,我已经按照你描述的方式解决了这个问题,但是我的问题是,是否有一个更优雅的解决方案来解决这个问题,比如
const std::vector v2{v1,5,6,7,8,9}
@emm我能想到的另一种方法是创建自己的类型,该类型在构造时采用向量和
初始值设定项列表
,并提供
begin()
end()
成员函数。
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;
}
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