STLマップとマルチマップの挿入と反復子

マップの挿入と反復子
map.insert(…); //要素をコンテナーに挿入し、ペア<iterator、bool>を返します

4つの方法で挿入されたマップ要素:
と仮定マップ<整数、文字列> mapStu、
モード1、オブジェクトが対を介して挿入される
mapStu.insert(対<整数、文字列>ジョー・スミス」))、
モード2オブジェクト
mapStu.inset(make_pair(2、 "Li Si"))をペア
で挿入します;メソッド3、オブジェクトを挿入します
mapStu.insert(map <int、string> :: value_type(3、 "Wang Wu" by value_type ));
4
番目の方法では、配列mapStu [4] = "Zhao Liu";
mapStu [5] = "Little Seven"によって値を挿入します

例:

#include <iostream>
#include <functional>
#include <algorithm>
#include <map>
#include <string>

using namespace std;

int main()
{
	map<int, string> mapStu;

	//方式一 构造一个pair, 然后插入
	pair<map<int, string>::iterator, bool> ret = mapStu.insert(pair<int, string>(1, "张三"));
	if(ret.second == true)
	{
		cout<<"插入成功! value: "<<(*(ret.first)).second<<endl;
	}
	else
	{
		cout<<"插入失败! "<<endl;
	}

	//如果键存在, 则插入会失败
	ret = mapStu.insert(pair<int, string>(1, "小张三"));
	if(ret.second == true)
	{
		cout<<"插入小张三成功! value: "<<(*(ret.first)).second<<endl;
	}
	else
	{
		cout<<"插入小张三失败!"<<endl;
	}

	//方式二 使用make_pair
	mapStu.insert(make_pair(2, "李四"));

	//方式三 使用value_type, 相当于pair<int, string>
	mapStu.insert(map<int, string>::value_type(3, "王五"));

	//方式四 直接使用[]重载, 如果键值对已经存在, 则覆盖原值
	mapStu[4] = "赵六";
	mapStu[4] = "小赵六";

	mapStu[5] = mapStu[6];
	mapStu[7] = mapStu[4];

	for(map<int, string>::iterator it = mapStu.begin(); it != mapStu.end(); it++)
	{
		cout<<"key: "<<(*it).first<<" value: "<<(*it).second<<endl;
	}

	system("pause");
	return 0;
}

動作環境:vc ++ 2010学習バージョン
動作結果:
ここに画像の説明を挿入

注:

1)最初の3つのメソッドは、<iterator、bool>のペアを返すinsert()メソッドを使用します

2)4番目の方法は非常に直感的ですが、同じキーに遭遇すると上書きされます。たとえば、キー値4を挿入する場合、まずmapStuで主キー4のアイテムを検索します。存在しない場合は、キーが4で値がデフォルトの初期化値であるペアをmapStuに挿入し、値を変更します。 「趙劉」になる。キー4が既に存在することが判明した場合は、このキーに対応する値を変更します。

3)string strName = mapStu [8]; //値演算または挿入演算

4)mapStuがキー8を持っている場合のみ正しいフェッチ操作です。それ以外の場合は自動的にインスタンスが挿入されます。キーは8で、値はデフォルトの構築時の初期値です。

イテレータ

map.begin();  //返回容器中第一个数据的迭代器。
map.end();  //返回容器中最后一个数据之后的迭代器。
map.rbegin();  //返回容器中倒数第一个元素的迭代器。
map.rend();   //返回容器中倒数最后一个元素的后面的迭代器。
オリジナルの記事を14件公開 いいね1 訪問数119

おすすめ

転載: blog.csdn.net/m0_45867846/article/details/105464474