考虑一个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/