首页 > 解决方案 > 为什么我们可以 push_back 只用范围定义的子向量?

问题描述

说我有一个vector<int> a = {1,2,3,4,5,6}and vector<vector<int>>b。为什么我们可以写

b.push_back({a.begin() + 1, a.begin() + 4});

最后得到b = {{2345}}? 我从部分代码中简化了这一点,所以如果这组特定的代码不起作用,我将粘贴实际代码。我认为简化将有助于理解其背后的想法。

标签: c++vectorpush-back

解决方案


b.push_back({a.begin() + 1, a.begin() + 4});

相当于:

std::vector<int> c{a.begin() + 1, a.begin() + 4};
b.push_back(c);

这只是调用std::vector构造函数,它接受一对迭代器并将这些迭代器之间的值复制到新向量中。


推荐阅读