C++中 vector ,list ,set,map的互相转换

该程序展示了如何在C++中进行容器之间的转换,包括从vector到list,list到set,set回转到vector,以及map的键和值分别转换为vector和list,最后再重建为map。
#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。输出结果

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值