C++ 程序初始化字典


C++ 没有像 Python 中那样名为字典的数据结构,但它拥有具有类似功能的相同数据结构。C++ 支持映射,它在 STL 类 std::map 中可用。映射对象在每个条目中包含一对值,一个是键值,另一个是映射值。键值用于搜索和唯一标识映射中的条目。而映射值并不总是唯一的,键值在映射中必须始终唯一。让我们看看如何使用映射。

首先,让我们看看如何在 C++ 中定义映射数据结构。

语法

#include 
map <data_type 1, data_type 2> myMap;

让我们举个例子,看看如何做到这一点 -

示例

#include <iostream>
#include <map>

using namespace std;

int main() {
   //initialising the map
   map <int, string> myMap;

   //inserting two key-value pairs
   myMap.insert({1, "Hello"});
   myMap.insert({2, "World"});

   //displaying the key-value pairs
   for (auto itr = myMap.begin(); itr != myMap.end(); ++itr) {
      cout << itr->first << " " << itr->second << endl;
   }

   return 0;
}

输出

1 Hello
2 World

C++ 中的映射可以通过多种方式初始化。其算法很简单。

算法

  • 创建一个映射对象。

  • 在声明对象的同时为其赋值。

使用初始化列表初始化映射

使用初始化列表初始化映射与在 C++ 中初始化数组相同。我们只需在声明映射时分配键值对,并用大括号括起来,格式为 {key, value}。语法如下所示。

语法

#include <map>
map <data_type 1, data_type 2> myMap = {{key1, value1}, {key2, value2}};

示例

#include <iostream>
#include <map>

using namespace std;

int main() {
   //initialising the map
   map <int, string> myMap = {{1, "One"}, {2, "Two"}, {3, "Three"}};

   //displaying the key-value pairs
   for (auto itr = myMap.begin(); itr != myMap.end(); ++itr) {
      cout << itr->first << " " << itr->second << '\n';
   }

   return 0;
}

输出

1 One
2 Two
3 Three

使用赋值运算符初始化映射

这类似于为数组中的特定索引赋值。我们不是提及索引,而是将键值放在映射下标中,就像在数组中一样。

语法

#include 
map <data_type 1, data_type 2> myMap;
myMap[key1] = value1;

示例

#include <iostream>
#include <map>

using namespace std;

int main() {
   //declaring the map
   map <int, string> myMap;
   myMap[1] = "One";
   myMap[2] = "Two";
   myMap[3] = "Three";

   //displaying the key-value pairs
   for (auto itr = myMap.begin(); itr != myMap.end(); ++itr) {
      cout << itr->first << " " << itr->second << '\n';
   }

   return 0;
}

输出

1 One
2 Two
3 Three

从另一个映射初始化映射

可能需要将一个映射复制到另一个映射中,为此,我们可以从另一个映射初始化一个映射。我们通过在声明时将映射对象传递给映射的复制构造函数来利用映射类的复制构造函数。

语法

#include <map>
map <data_type 1, data_type 2> myMap1(myMap2);

示例

#include <iostream>
#include <map>

using namespace std;

int main() {
   //declaring the map
   map <int, string> myMap;
   myMap[1] = "One";
   myMap[2] = "Two";
   myMap[3] = "Three";

   //copying using copy constructor
   map <int, string> myMap2(myMap);

   //displaying the key-value pairs
   for (auto itr = myMap2.begin(); itr != myMap2.end(); ++itr) {
      cout << itr->first << " " << itr->second << '\n';
   }

   return 0;
}

输出

1 One
2 Two
3 Three

结论

C++ 中的映射是有序集合,这意味着映射中的元素根据键值排序。这使得它比其他类似的数据结构(如无序映射,其中键值对未排序)慢。映射中的所有操作都具有对数复杂度,并且在内存中以红黑树的形式实现。然而,在实践中,映射非常有用,因为它提供了非常灵活的方式以键值对的方式存储数据。我们已经讨论了初始化映射的所有主要方法;尽管还有更多初始化方法,但这些是最直观的操作方法。

更新于: 2022-12-14

2K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.