set 转换为 vector 是一种常见的操作,特别是在需要按特定顺序访问或操作集合中的元素时。以下是一些方法将 set 转换为 vector,并包括示例代码。

基本用法

在转换 setvector 时,首先需要包含 <set><vector> 头文件,并使用相应的命名空间。

1
2
#include <set>
#include <vector>

特点和注意事项

  • 自动排序set 中的元素是有序的,在转换为 vector 后仍保持这种顺序。
  • 去重set 中的元素是唯一的,因此转换后的 vector 也不会包含重复的元素。

示例代码

方法 1:使用构造函数

可以直接使用 vector 的构造函数,将 set 的元素范围传递给 vector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <set>
#include <vector>
#include <iostream>

int main() {
std::set<int> s = {10, 5, 20, 15};
std::vector<int> v(s.begin(), s.end()); // 使用set的范围初始化vector

std::cout << "Elements in vector: ";
for (const auto& elem : v) {
std::cout << elem << " ";
}
std::cout << std::endl;

return 0;
}

方法 2:使用 std::copy

可以使用 std::copy 算法将 set 中的元素复制到 vector 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <set>
#include <vector>
#include <iostream>
#include <algorithm>

int main() {
std::set<int> s = {10, 5, 20, 15};
std::vector<int> v;
v.reserve(s.size()); // 预留足够的空间以避免重新分配内存
std::copy(s.begin(), s.end(), std::back_inserter(v));

std::cout << "Elements in vector: ";
for (const auto& elem : v) {
std::cout << elem << " ";
}
std::cout << std::endl;

return 0;
}

方法 3:使用范围 insert 方法

使用 vectorinsert 方法将 set 中的元素范围插入到 vector 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <set>
#include <vector>
#include <iostream>

int main() {
std::set<int> s = {10, 5, 20, 15};
std::vector<int> v;
v.insert(v.end(), s.begin(), s.end()); // 使用insert方法将set的元素插入vector

std::cout << "Elements in vector: ";
for (const auto& elem : v) {
std::cout << elem << " ";
}
std::cout << std::endl;

return 0;
}

总结

set 转换为 vector 有多种方法,包括直接使用构造函数、使用 std::copy 算法和使用 vectorinsert 方法。这些方法都可以有效地将有序且不重复的 set 元素转换为 vector,以便在 vector 中进行进一步的操作。理解和掌握这些方法有助于在实际编程中灵活地进行容器之间的转换。


本站由 @anonymity 使用 Stellar 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。