gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:58:25 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com