给map容器添加元素,用insert函数添加!!

如:
map<string,int> m1;
m1.insert(make_pair("lucy",20));
不知道为什么第二个语句总是报错!!!什么原因??谢谢!!

用的是c++ map的insert方法。

函数定义:

single element (1)  插入单个元素 队尾插入

pair<iterator,bool> insert (const value_type& val);

with hint (2)  插入单个元素 在position的位置插入

iterator insert (iterator position, const value_type& val); 

range (3)  插入一串元素 一般用的是另一个map中的,从开始到结束

template <class InputIterator> void insert (InputIterator first, InputIterator last);

示例:

// map::insert (C++98)
#include <iostream>
#include <map>

int main ()
{
  std::map<char,int> mymap;

  // first insert function version (single parameter):第1种
  mymap.insert ( std::pair<char,int>('a',100) );
  mymap.insert ( std::pair<char,int>('z',200) );

  std::pair<std::map<char,int>::iterator,bool> ret;
  ret = mymap.insert ( std::pair<char,int>('z',500) );
  if (ret.second==false) {
    std::cout << "element 'z' already existed";
    std::cout << " with a value of " << ret.first->second << '\n';
  }

  // second insert function version (with hint position):第2种
  std::map<char,int>::iterator it = mymap.begin();
  mymap.insert (it, std::pair<char,int>('b',300));  // max efficiency inserting
  mymap.insert (it, std::pair<char,int>('c',400));  // no max efficiency inserting

  // third insert function version (range insertion):第3种
  std::map<char,int> anothermap;
  anothermap.insert(mymap.begin(),mymap.find('c'));

  // showing contents:
  std::cout << "mymap contains:\n";
  for (it=mymap.begin(); it!=mymap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';

  std::cout << "anothermap contains:\n";
  for (it=anothermap.begin(); it!=anothermap.end(); ++it)
    std::cout << it->first << " => " << it->second << '\n';

  return 0;
}


   

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-16
m1.insert(make_pair("lucy",20));

m1.insert(make_pair(string("lucy"),20));
试试。
make_pair是std::pair的helper function,是个函数模板,根据参数确定匹配的pair的元素类型,所以LZ的用法弄出来的元素是pair<char* int>类型的。
====
[原创回答团]

参考资料:原创

本回答被提问者采纳
第2个回答  2010-07-25
#include <iostream>
#include <map>
#include <string> //是不是头文件少了
using namespace std;

int main() {
map<string,int> m1;
m1.insert(make_pair("lucy",20));
}

给map容器添加元素,用insert函数添加!!
用的是c++ map的insert方法。函数定义:single element (1) 插入单个元素 队尾插入 pair<iterator,bool> insert (const value_type& val);with hint (2) 插入单个元素 在position的位置插入 iterator insert (iterator position, const value_type& val);range (3) 插入一串元素 一般用的是另...

怎么用insert函数给map容器添加元素?
m1.insert(make_pair("lucy",20));改成m1.insert(make_pair(string("lucy"),20));make_pair是std::pair的helper function,是个函数模板,根据参数确定匹配的pair的元素类型,所以LZ的用法弄出来的元素是pair<char* int>类型的。insert函数 string& insert ( size_t pos1, const string& str...

map添加元素的方法
一、利用下标法:m1[str] = val;先查找有没有str这个元素,如有,不作任何操作,没有的话,添加str并给str关联的对象赋值;也可以只写m1[str];二、利用函数 m1.insert(e),e为pair型,即,val_type,如果,e.fitst不在map中,刚添加e m1.insert(beg, end) beg, end, 为元素迭代器,...

c++ primer map insert问题
map容器中的每个元素都是由键(key)和值(value)两部分组成的一个pair。map的insert函数有两个版本:插入一个元素和插入一组元素。插入一个元素的版本的insert的参数是pair类型的,插入一组元素的版本的insert的参数是一对迭代器,分别指向要插入的那一组pair的开始和结束位置。

C++ 如何使用 std::map 容器
首先,创建一个空的std::map:cppstd::map myMap;然后,可以通过insert方法添加键值对,例如:cppmyMap.insert(std::make_pair(key, value));获取容器大小使用size函数:cppsize_t size = myMap.size();遍历map并打印键值对,可以使用迭代器:cppfor (const auto& pair : myMap) { std::c...

c++中容器map怎么插入一对元素?
首先包含头文件 include <string> include <map> using namespace std;如下写法均合法:map<string, int> word_count;word_count["string_1"] = 1;word_count.insert(make_pair<string, int>("string_2", 2));word_count.insert(map<string, int>::value_type("string_3", 3));在Visual...

STL 容器---关联容器--map<Key,Value>
编译器将根据 map::find( )的返回类型自动推断出迭代器的类型。multimap 中查找元素,multimap,容器可能包含多个键相同的键-值对,因此需要找到与指定 键对应的所有值。为此,可使用 multimap::count( )确定有多少个值与指定的键对应,再对迭代器递增,以访问这些相邻的值:插入 第一种:用 insert函...

...Map容器不能插入重复键值的元素,可是我这个怎么能插入相同的啊,搞不...
map.insert函数是可以插入相同键值的,如果键值相同,则保持原先的map不变,即后面的键值对插入操作没有进行。

STL-map和set
Map结构以键值对形式存储数据,其中键是唯一的,值可以重复。定义map容器时需要指定键和值的数据类型,例如:`map myMap;`表示创建一个以整数为键、字符串为值的map。使用时通过键查找对应的值,插入数据使用`insert()`函数。迭代器是访问map中元素的有效方式。通过迭代器可以遍历整个map,查找元素或...

C++ map用法总结(整理)
要使用map,首先需要包含头文件,并定义模板类型。例如,定义一个存储int和string的map:include typedef std::map UDT_MAP_INT_CSTRING;UDT_MAP_INT_CSTRING enumMap;map的构造方法有多种,最常见的创建方式是直接初始化一个空的map,如`map mapStudent;`。插入元素时,insert函数确保唯一性,如果关键...

相似回答