マップ記事のC ++ STLの一般的な操作

マップ記事のC ++ STLの一般的な操作


前書き:

#include<map>

マップは標準の連想コンテナであり、その要素はペアです(前のペアの記事を参照してください)。

そのペアを:(キー、値)と表記します。これは、キーがキーワードであり、値が対応する値であると理解できます。

キー値はマップ内で一意です。

マップの実現は、要素が特定の順序で並べ替えられ、挿入プロセスも並べ替えルールに従って実行される、赤黒木バリアントの平衡二分木を使用して実現されます。

1.構造

map<int, string> mp1;
map<int, char> mp2;
//也可以是其他各种类型包括自定义结构体

2.挿入

(1)ペアを介して挿入
map<int, string> mp1;
mp1.insert(pair<int, string>(1, "1111"));
(2)make_pairを介して挿入します
mp1.insert(make_pair(2, "2222"));
(3)value_typeを介して挿入
mp1.insert(map<int, string>::value_type(3, "3333"));
(4)配列のように挿入します
mp1[4] = "4444";

注意!

insertの戻り値はpair <iterator、bool>です。

4番目の方法では、挿入操作中に、mp1にキー4の要素があるかどうかを最初に確認します。見つからない場合は、新しいノードを追加し、そのキーを4に割り当て、に対応する文字列を割り当てます。 key = 4から "4444";見つかった場合は、元のkey = 4から "4444"に対応する文字列値を変更します。

3.一般的に使用される機能

mp1.begin();	//返回mp1第一个元素的迭代器
mp1.end();		//返回mp1最后一个元素后面一个位置的迭代器
mp1.size();		//返回mp1中元素的个数
mp1.empty();	//判断mp1是否为空
mp1.find(1);	//如果存在key值为1的元素,那么返回该元素的迭代器,否则返回mp1.end()
mp1.count(1);	//返回key为1的元素的个数,由于map不允许key重复,所以返回值只能是0或1

ここでのカウント関数は、マルチマップの場合は1より大きくすることができます。

挿入機能については前述しましたが、削除機能については後ほど説明します。

4.削除

mp1.clear();		//清空mp1
mp1.erase(1);		//删除key值为1的元素,并且返回下一个元素的迭代器
map<int, string>::iterator it = mp1.begin();
mp1.erase(it);		//删除迭代器it所指向的元素,并返回下一个元素的迭代器

5.包括的なコード

#include<iostream>
#include<map>
using namespace std;
int main() {
    
    
	map<int, string> mp1;
	mp1.insert(map<int, string>::value_type(3, "我是3"));
	mp1[4] = "我是4";
	mp1.insert(make_pair(2, "我是2"));
	mp1.insert(pair<int, string>(1, "我是1"));
	//插入元素

	for (auto it = mp1.begin(); it != mp1.end(); ++it)
		cout << it->first << ":" << it->second << endl;
	cout << "-----------------------------" << endl;
	//输出

	mp1.erase(1);		//删除key值为1的元素,并且返回下一个元素的迭代器
	for (auto it = mp1.begin(); it != mp1.end(); ++it)
		cout << it->first << ":" << it->second << endl;
	cout << "-----------------------------" << endl;
	//删除key值为1的元素后输出

	map<int, string>::iterator it = mp1.begin();
	mp1.erase(it);		//删除迭代器it所指向的元素,并返回下一个元素的迭代器
	for (auto it = mp1.begin(); it != mp1.end(); ++it)
		cout << it->first << ":" << it->second << endl;
	cout << "-----------------------------" << endl;
	//再删除mp1第一个元素后输出

	mp1.clear();		//清空mp1
	for (auto it = mp1.begin(); it != mp1.end(); ++it)
		cout << it->first << ":" << it->second << endl;
	cout << "-----------------------------" << endl;
	//清空后输出

	if (mp1.empty())
		cout << "mp1 is empty!" << endl;
	cout << "mp1's size is " << mp1.size() << endl;
	mp1.insert(make_pair(2, "我是2"));
	cout << mp1.find(2)->second << endl;
	cout << mp1.count(1);
	//其他函数的使用
	return 0;
}

ここに画像の説明を挿入


基本的なアプリケーションと操作をマップします

問題を見つけたら訂正してください!

あなたを助けることを願っています!わからない場合はメッセージを残してください!

おすすめ

転載: blog.csdn.net/qq_45985728/article/details/112687378