Map<int, string> mapStudent;
(1)
mapStudent.insert(pair<int, string>(1, “student_one”));
(2)
mapStudent.insert(map<int, string>::value_type (1, “student_one”));
(3)
mapStudent[1] = “student_one”;
第一种和第二种在效果上是完成一样的,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是插入数据不了的;
用数组方式它可以覆盖以前该关键字对应的值;
用程序说明:
mapStudent.insert(map<int,string>::value_type (1, “student_one”));
mapStudent.insert(map<int,string>::value_type (1, “student_two”));
上面这两条语句执行后,map中1这个关键字对应的值是“student_one”,第二条语句并没有生效,那么这就涉及到我们怎么知道insert语句是否插入成功的问题了,可以用pair来获得是否插入成功,程序如下
pair<map<int,string>::iterator, bool>Insert_Pair;
Insert_Pair =mapStudent.insert(map<int,string>::value_type (1, “student_one”));
我们通过pair的第二个变量来知道是否插入成功,它的第一个变量返回的是一个map的迭代器,如果插入成功的话Insert_Pair.second应该是true的,否则为false。
pair<iterator, bool> insert(
const value_type& Val
); // single element
iterator insert(
const_iterator Where,
const value_type& Val
); // single element with hint
template<class ValTy>
pair<iterator, bool> insert(
ValTy&& Val
); // single element, perfect forwarded
template<class ValTy>
iterator insert(
const_iterator Where,
ValTy&& Val
); // single element, perfect forwarded, with hint
template<class InputIterator>
void insert(
InputIterator First,
InputIterator Last
); // range
void insert(
initializer_list<value_type> IList
); // initializer list
set
pair<iterator,bool> insert(
const value_type& Val
); // single element
iterator insert(
const_iterator Where,
const value_type& Val
); // single element with hint
template<class ValTy>
pair<iterator,bool> insert(
ValTy&& Val
); // single element, perfect forwarded
template<class ValTy>
iterator insert(
const_iterator Where,
ValTy&& Val
); // single element, perfect forwarded, with hint
template<class InputIterator>
void insert(
InputIterator First,
InputIterator Last
); // range
void insert(
initializer_list<value_type> IList
); // initializer list