在 C++ 中将集合的前 n 个值复制到向量中的简单方法

Win*_*erd 3 c++ iterator stl c++14 c++17

简单的问题,假设我保存了一个包含 5 个值的集合,并且我想将前 3 个值复制到一个向量中,有没有一种快速简单的方法可以做到这一点?我知道,如果我想将整个集合复制到向量中,我可以使用如下所示的内容:

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

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

lub*_*bgr 6

要从a获取迭代器n步骤,会产生您需要的抽象。beginstd::setstd::next

std::vector<int> vec(test.cbegin(), std::next(test.cbegin(), 5));
Run Code Online (Sandbox Code Playgroud)

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