#include <iostream>
#include <vector>
#include <list>
#include <set>
#include <map>
int main() {
// 创建 vector
std::vector<int> vec {1, 2, 3};
// vector 转换为 list
std::list<int> lst(vec.begin(), vec.end());
// list 转换为 set
std::set<int> st(lst.begin(), lst.end());
// set 转换为 vector
std::vector<int> vec2(st.begin(), st.end());
// 创建 map
std::map<std::string, int> mp {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
// 将 map 的键转换为 vector
std::vector<std::string> keys;
for (const auto& kv : mp) {
keys.push_back(kv.first);
}
// 将 map 的值转换为 list
std::list<int> values;
for (const auto& kv : mp) {
values.push_back(kv.second);
}
// 将 vector 和 list 转换为 map
std::map<std::string, int> mp2;
auto key_iter = keys.begin();
auto value_iter = values.begin();
while (key_iter != keys.end() && value_iter != values.end()) {
mp2[*key_iter] = *value_iter;
key_iter++;
value_iter++;
}
// 输出结果
std::cout << "vec: ";
for (const auto& x : vec) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "lst: ";
for (const auto& x : lst) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "st: ";
for (const auto& x : st) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "vec2: ";
for (const auto& x : vec2) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "mp: ";
for (const auto& kv : mp) {
std::cout << "(" << kv.first << ", " << kv.second << ") ";
}
std::cout << std::endl;
std::cout << "keys: ";
for (const auto& x : keys) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "values: ";
for (const auto& x : values) {
std::cout << x << " ";
}
std::cout << std::endl;
std::cout << "mp2: ";
for (const auto& kv : mp2) {
std::cout << "(" << kv.first << ", " << kv.second << ") ";
}
std::cout << std::endl;
return 0;
}
该程序将一个 vector 转换为 list,list 转换为 set,set 转换为 vector,并且还将一个 map 转换为 vector 和 list,再将这两个容器转换为一个新的 map。输出结果
该程序展示了如何在C++中进行容器之间的转换,包括从vector到list,list到set,set回转到vector,以及map的键和值分别转换为vector和list,最后再重建为map。
430

被折叠的 条评论
为什么被折叠?



