C++ STL Map

来源:互联网 发布:中国税务网络大学app 编辑:程序博客网 时间:2024/06/06 08:48

1.定义并构造Map

map<对象1,对象2> 变量名;

例如map<string, Student> StudentBook;

2.使用insert插入数据

 (1)pair<iterator, bool> insert( const pair<KEY_TYPE, VALUE_TYPE> &val )

该pair的模板参数就是该map容器的键值类型和值的类型。返回值也是一个pair,不过其模板参数是迭代器和bool,在这个返回值中,迭代器表示的是插入的数据在容器中的位置,bool值表示的是是否插入成功。

 (2)iterator insert( iterator pos, const pair<KEY_TYPE, VALUE_TYPE> &val )

也是表示在容器中插入一个pair,不过该方法给出一个表示目标位置的迭代器(第一个参数)。其目的是在目标位置上插入这个pair。该方法的返回值也是一个迭代器,表示这个pair实际插入的位置。

 (3)void insert( input_iterator start, input_iterator end );

注意:如果向迭代器中插入一个已有的键值对,则不能成功插入数据,而返回值的迭代器成员执行拥有该键值的元素。

将一个由输入迭代器的区间插入到容器中,该迭代器去接是左闭右开的。

例如:

map<int, int> m;

typedef pair<int, int> VALUE;

typedef map<int, int>::iterator MAP_ITER;

typedef pair< MAP_ITER, bool > RESULT_PAIR;

//(1)

m.insert( VALUE( 0, 1) );

RESULT_PAIR res = m.insert( VALUE( 1,11) );

//(2)

MAP_ITER iter = m.insert( m.begin(), VALUE( 2, 12) );

//(3)

map <int, int> m_copy;

m_copy.insert( m.begin(), m.end() );

3.查找数据

(1)使用运算符“[ ]”,但是如果[ ]引用的目标元素不存在,则会生成一个。

(2)find()函数

iterator find(const key_type& _ _x);

const_iterator find(const key_type& _ _x) const;

例如:

map<int, int> m;

m[0] = 10;

m[1] = 11;

m[2] = 12;

typerdef map<int, int>::iterator MAP_ITER;

typerdef map<int, int>::const_iterator CONST_ITER;

MAP_ITER iter = m.find( 5 );

//如果iter == m.end() ,则表示没有找到

iter = m.find(1);

iter->second = 13; //重新赋值

(3)除了find()以外,还有lower_bound()和upper_bound()。

lower_bound() 接收一个键值类型的参数。如果存在这个键值,则返回该元素的迭代器,如果不存在,则返回一个迭代器指向第一个键值比该参数大的元素。

4.删除数据

(1)size_type erase(const key_type& _ _x);

删除一个键值,如果没有该键值,返回0

(2)void erase(iterator _ _position);

删除一个迭代器指定的元素

(3)void erase(iterator _ _first, iterator _ _last);

删除迭代器区间表示的容器区间

示例简答,就不列举了。

5.其他操作

成员函数参数操作empty无如果map为空,返回true,否则返回falsesize返回map中元素个数max_size返回map能够保存最大元素个数get_allocator返回map的配置器swapmap &obj交互两个map中元素key_comp返回比较键值的函数对象value_comp返回比较元素的函数对象equal_rangeconst key_type &key返回指向键值为key元素的迭代器区间countconst key_type &key返回具有指定键值的元素个数

原创粉丝点击