C++语法基础--关联容器--map(一)--constructor,operator[],insert
来源:互联网 发布:unity3d插件 编辑:程序博客网 时间:2024/06/05 21:57
1关联容器类型
set和map类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素
2.map类型(#include<map>)
原型:
*map是键-值对的集合,可以用键作为下标来获取一个值
3.map的构造函数
原型:
empty:
explicit map (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
range:
template <class InputIterator>
map (InputIterator first, InputIterator last,
const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
copy :
map (const map& x);
eg:
map<char,int> mp1;
mp1['a']=10;
mp1['b']=30;
map<char,int> mp2 (mp1.begin(),mp1.end());
map<char,int> mp3 (mp2);
4.键类型的约束
*默认情况下,标准库使用键类型定义的<操作符来实现键的比较
*键类型必须支持<操作符
5.map定义的类型
6.map迭代器进行解引用将产生pair类型的对象
*解引用获得的pair对象,它的值成员可以修改,但键成员不可以修改
eg:
typedef map<char,int> my_map;
my_map mp1;
mp1['a']=10;
mp1['b']=30;
my_map::iterator it=mp1.begin();
cout<<(*it).first<<endl;
cout<<it->second<<endl;
it->first='c'; //error
it->second=20;//ok
7.使用下标访问map对象
原型:
mapped_type& operator[] (const key_type& k)
*用下标访问不存在的元素,将会在map容器中添加一个新的元素,它的键即为该下标值
eg:
typedef map<char,int> my_map;
my_map mp1;
mp1['a']=10;
cout<<mp1['a']<<endl; //10,查找的键'a'存在,返回map中对应的值
cout<<mp1['b']<<endl; //0,查找的键'b不'存在,在map容器中添加一个新的元素,并把内置类型初始化为 //0(如果是类类型则调用默认构造函数)
cout<<mp1.size()<<endl;//2
8.向map添加成员insert()
原型:
single element:
pair<iterator,bool> insert (const value_type& val);
with hint :
iterator insert (iterator position, const value_type& val);
range :
template <class InputIterator>
void insert (InputIterator first, InputIterator last);
eg:
int main ()
{
typedef map<string,int> mymap;
typedef map<string,int>::value_type myvalue;
mymap mp1;
// 第一种插入方法(single element)
mp1.insert ( myvalue(string("jack"),19) );
mp1.insert ( myvalue(string("tom"),20) );
pair<mymap::iterator,bool> res;
res = mp1.insert ( myvalue(string("tom"),21) );
if (res.second==false) //检测insert的返回值
{
cout << "element 'tom' already existed";
cout << " with a value of " << res.first->second << '\n';//20
}
// 第二种插入方法 (with hint position):
mymap::iterator it = mp1.begin();
mp1.insert (it, myvalue(string("jany"),17));
// 第三种插入方法 (range insertion):
mymap mp2;
mp2.insert(mp1.begin(),mp1.find(string("tom")));
//输出mp1的内容
cout << "mp1 contains:\n";
for (it=mp1.begin(); it!=mp1.end(); ++it)
cout << it->first << " : " << it->second << '\n';
//输出mp2的内容
cout << "mp2 contains:\n";
for (it=mp2.begin(); it!=mp2.end(); ++it)
cout << it->first << " : " << it->second << '\n';
return 0;
}
set和map类型的对象所包含的元素都具有不同的键,不允许为同一个键添加第二个元素
2.map类型(#include<map>)
原型:
template<class Key,class T,class Compare = std::less<Key>,
class Allocator = std::allocator<std::pair<const Key, T> >>
class map;*map是键-值对的集合,可以用键作为下标来获取一个值
3.map的构造函数
原型:
empty:
explicit map (const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
range:
template <class InputIterator>
map (InputIterator first, InputIterator last,
const key_compare& comp = key_compare(),
const allocator_type& alloc = allocator_type());
copy :
map (const map& x);
eg:
map<char,int> mp1;
mp1['a']=10;
mp1['b']=30;
map<char,int> mp2 (mp1.begin(),mp1.end());
map<char,int> mp3 (mp2);
4.键类型的约束
*默认情况下,标准库使用键类型定义的<操作符来实现键的比较
*键类型必须支持<操作符
5.map定义的类型
6.map迭代器进行解引用将产生pair类型的对象
*解引用获得的pair对象,它的值成员可以修改,但键成员不可以修改
eg:
typedef map<char,int> my_map;
my_map mp1;
mp1['a']=10;
mp1['b']=30;
my_map::iterator it=mp1.begin();
cout<<(*it).first<<endl;
cout<<it->second<<endl;
it->first='c'; //error
it->second=20;//ok
7.使用下标访问map对象
原型:
mapped_type& operator[] (const key_type& k)
*用下标访问不存在的元素,将会在map容器中添加一个新的元素,它的键即为该下标值
eg:
typedef map<char,int> my_map;
my_map mp1;
mp1['a']=10;
cout<<mp1['a']<<endl; //10,查找的键'a'存在,返回map中对应的值
cout<<mp1['b']<<endl; //0,查找的键'b不'存在,在map容器中添加一个新的元素,并把内置类型初始化为 //0(如果是类类型则调用默认构造函数)
cout<<mp1.size()<<endl;//2
8.向map添加成员insert()
原型:
single element:
pair<iterator,bool> insert (const value_type& val);
with hint :
iterator insert (iterator position, const value_type& val);
range :
template <class InputIterator>
void insert (InputIterator first, InputIterator last);
eg:
int main ()
{
typedef map<string,int> mymap;
typedef map<string,int>::value_type myvalue;
mymap mp1;
// 第一种插入方法(single element)
mp1.insert ( myvalue(string("jack"),19) );
mp1.insert ( myvalue(string("tom"),20) );
pair<mymap::iterator,bool> res;
res = mp1.insert ( myvalue(string("tom"),21) );
if (res.second==false) //检测insert的返回值
{
cout << "element 'tom' already existed";
cout << " with a value of " << res.first->second << '\n';//20
}
// 第二种插入方法 (with hint position):
mymap::iterator it = mp1.begin();
mp1.insert (it, myvalue(string("jany"),17));
// 第三种插入方法 (range insertion):
mymap mp2;
mp2.insert(mp1.begin(),mp1.find(string("tom")));
//输出mp1的内容
cout << "mp1 contains:\n";
for (it=mp1.begin(); it!=mp1.end(); ++it)
cout << it->first << " : " << it->second << '\n';
//输出mp2的内容
cout << "mp2 contains:\n";
for (it=mp2.begin(); it!=mp2.end(); ++it)
cout << it->first << " : " << it->second << '\n';
return 0;
}
运行结果:
- C++语法基础--关联容器--map(一)--constructor,operator[],insert
- C++MAP关联容器
- C++map关联容器
- 关联容器基础(一)
- c++ Map关联容器学习(一)
- C++语法基础--关联容器--map(二)--查找并读取map中的元素count(),find()与 从map对象中删除元素erase()
- 【C/C++】关联容器pair map set
- C++关联容器-map[ ]=与insert操作不同
- C++:关联容器(set,multiset,map,multimap)
- C++:关联容器(pair、map、set、multiset)
- c++STL(四)关联容器set与map
- STL2—关联容器map基础总结
- STL2—关联容器map基础总结
- 关联容器(三):map
- C++语法基础--关联容器--set
- C++语法基础--关联容器--multimap,multiset
- C++-关联容器类型map
- C++STL之关联容器【map】【set】
- 001螺旋矩阵的java实现
- C# 关键字params的用法
- RadioGroup未设置ID,居然能多选,不互斥,神!
- Apache Shiro 使用手册(四)Realm 实现
- C++设计模式
- C++语法基础--关联容器--map(一)--constructor,operator[],insert
- Apache Shiro 使用手册(五)Shiro 配置说明
- Chrome插件——一键保存网页为PDF1.1发布
- HTTPCLIENT抓取网页内容
- ExtJS - SuperBoxSelect
- Spring配置项<context:annotation-config/>解释说明
- kill oracle进程释放 Semaphore Arrays
- 《见与不见》
- 怎么样删除用ClassWizard创建的类?