📅  最后修改于: 2023-12-03 14:50:52.342000             🧑  作者: Mango
在 C++ 中,可以使用标准库中的 std::vector
和 std::set
来实现对集合的操作。有时,我们需要将一个集合复制到一个向量中,本文将介绍几种实现方法。
#include <set>
#include <vector>
int main() {
std::set<int> mySet = {5, 7, 2, 9, 8};
std::vector<int> myVector;
for (int element : mySet) {
myVector.push_back(element);
}
return 0;
}
上述代码中,我们首先定义了一个 std::set<int>
集合 mySet
和一个空的 std::vector<int>
向量 myVector
。我们通过循环将 mySet
中的元素逐个添加到 myVector
中,最终得到了一个包含所有 mySet
元素的向量。
std::copy
#include <set>
#include <vector>
#include <algorithm>
int main() {
std::set<int> mySet = {5, 7, 2, 9, 8};
std::vector<int> myVector(mySet.size());
std::copy(mySet.begin(), mySet.end(), myVector.begin());
return 0;
}
上述代码中,我们首先仍然定义了一个 std::set<int>
集合 mySet
,不同的是,我们使用了 mySet
的 size()
方法来定义一个大小与 mySet
相同的 std::vector<int>
向量 myVector
。我们接着使用 std::copy
算法将 mySet
中的元素复制到 myVector
中,最终得到了一个包含所有 mySet
元素的向量。
std::vector
的构造函数#include <set>
#include <vector>
int main() {
std::set<int> mySet = {5, 7, 2, 9, 8};
std::vector<int> myVector(mySet.begin(), mySet.end());
return 0;
}
上述代码中,我们仍然定义了一个 std::set<int>
集合 mySet
,不同的是,我们使用了 std::vector
的构造函数,通过将 mySet
的 begin()
和 end()
迭代器传递给构造函数来创建了一个包含所有 mySet
元素的向量。
以上是三种比较常见的将集合复制到向量的方法。在实际编码中可以根据需要选择适合的方法。