c++ - 将集合的第一个第 n 个值复制到 C++ 中的 vector 的简单方法

标签 c++ stl iterator c++14 c++17

简单的问题,假设我保存了一个包含 5 个值的集合,并且我想将前 3 个值复制到一个 vector 中,有没有一种快速简便的方法来做到这一点? 我知道如果我想将整个集合复制到一个 vector 中,我可以使用这样的东西:

set <int> test = {0,1,2,3,4,5};
vector<int> vect(test.begin(),test.end());

我可以做类似的事情来只复制前 n 个值吗?我一直在使用 for 循环来执行此操作,但我只是想检查是否有更快的编码方法。

最佳答案

要从 std::setbegin 获取迭代器 n 步骤,std::next 产生你需要的抽象。

std::vector<int> vec(test.cbegin(), std::next(test.cbegin(), 5));

这是由于 std::set 提供了双向迭代器,因此您不能使用像 test.cbegin() + 5 这样的算术。 std::next 为您解决这个问题。

关于c++ - 将集合的第一个第 n 个值复制到 C++ 中的 vector 的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63425380/

相关文章:

c++ - 为什么 C++ lambda 是用仿函数而不是函数指针实现的?

c++ - 如何使用私有(private)Qt C++ API?

c++ - 模板特化的成员函数类型

c++ - 将 OpenCV 2 vector<Point2i> 转换为 vector<Point2f>

rust - 将迭代器返回给 RefCell

c++ - 根据赋值实例化模板函数

c++ - 那么我在哪里可以找到最好的在线 C++ 标准库引用资料?

c++ - 扩展 std::priority_queue 功能

c++ - 我可以在环中实现迭代器 end() 吗?

java - 如何反向迭代嵌套多重映射