当前位置: 编程技术>c/c++/嵌入式
map插入自定义对象总结
来源: 互联网 发布时间:2014-10-19
本文导语: 难道插入map还有什么讲究吗?我们且看map在STL中的定义方法:template 第一个参数Key是关键字类型第二个参数T是值类型第三个参数Compare是比较函数(仿函数)第四个参数是内存配置对象 map内部存储机制实际是以红黑树为基础,...
难道插入map还有什么讲究吗?我们且看map在STL中的定义方法:
template
第一个参数Key是关键字类型
第二个参数T是值类型
第三个参数Compare是比较函数(仿函数)
第四个参数是内存配置对象
map内部存储机制实际是以红黑树为基础,红黑树在插入节点时,必须依照大小比对之后在一个合适的位置上执行插入动作。所以作为关键字,起码必须有“first.second, it->second);
return 0;
}
以结构体或类为关键字插入map
代码如下:
#include
struct st
{
int a, b;
st():a(0), b(0){}
st(int x, int y):a(x), b(y){}
};
int main()
{
std::map res;
res.insert(std::make_pair(st(1,2), 12));
res.insert(std::make_pair(st(30,4), 34));
res.insert(std::make_pair(st(5,6), 56));
std::map::iterator it = res.find(st(30,4));
if (it == res.end())
printf("NULL"n");
else
printf("first:%d second:%d %d"n", it->first.a, it->first.b, it->second);
return 0;
}
编译这个程序也是错误的,错误意思大概也是没有定义“a < rs.a || (this->a == rs.a && this->b < rs.b));}
};
按照这个改动再次编译程序还是错误,有个如下这样的提示:
/usr/include/c++/3.2.3/bits/stl_function.h:197: passing `const st' as `this' argument of `bool st::operator