简单的问题,假设我保存了一个包含 5 个值的集合,并且我想将前 3 个值复制到一个 vector 中,有没有一种快速简便的方法来做到这一点? 我知道如果我想将整个集合复制到一个 vector 中,我可以使用这样的东西:
set <int> test = {0,1,2,3,4,5};
vector<int> vect(test.begin(),test.end());
我可以做类似的事情来只复制前 n 个值吗?我一直在使用 for 循环来执行此操作,但我只是想检查是否有更快的编码方法。
最佳答案
要从 std::set
的 begin
获取迭代器 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/