浅析map和multimap应用的小程序
来源:互联网 发布:musecc 2018mac破解版 编辑:程序博客网 时间:2024/05/20 14:23
创建类如下:
class Person{private: char *name; int age; friend class lesserAge;public: Person(const char *ch = NULL, int num = 0):age(num){ //1 name = new char[strlen(ch)+1]; strcpy(name, ch); name[strlen(ch)] = '\0'; //cout << "name:" << name << endl; } Person(const Person &ps){ //2 name = new char[strlen(ps.name)+1]; strcpy(name,ps.name); name[strlen(ps.name)] = '\0'; age = ps.age; } ~Person(){ //3 delete[] name; } bool operator<(const Person &p) const { return strcmp(name, p.name) < 0; } friend ostream &operator<<(ostream &out, const Person &ps){ //4 out << "(" << ps.name << ", " << ps.age << ")"; return out; }};class lesserAge{public: int operator() (const Person &p1, const Person &p2) const { return p1.age < p2.age; }};
- 构造函数:赋值的时候可能输入的值不完整,所以设定默认值,对于char *指针赋值的时候,要采用复制的方式,否则会造成指针指向同一块区域,在析构函数起作用的时候会形成野指针。
- 这里要显示写出复制构造函数的原因一致,在用类对象构建其他对象的时候,如果采用隐式构造函数,会导致和上述一样的问题。
- 析构函数,在有内存申请的时候,老样子^_^
- 重载<<为了接下来打印使用。
main函数里结构如下:
pair<Person, char *> p[] = { pair<Person, char *>(Person("Gregg", 25), "Pittsburgh"), pair<Person, char *>(Person("Ann", 30), "Boston"), pair<Person, char *>(Person("Bill", 20), "Belmont")}; map<Person, char *> cities(p, p+3); //1 map<Person, char *>::iterator it = cities.begin(); cities[Person("Kay", 40)] = "New York"; //2 cities["Jenny"] = "Newark"; //3 cities.insert(map<Person, char *>::value_type(Person("Kay", 40), "Detroit")); //4 cities.insert(pair<Person, char *>(Person("Kay", 40), "Austin")); map<Person, char *>::iterator i; for(i = cities.begin(); i != cities.end(); i++) cout << (*i).first << ' ' << (*i).second << endl;
- 构造map的方式之一,不多介绍
- 以Person类型的对象为索引(可以看作广义上的数组)
- 对应上面的构造函数,age为默认值0,此处意为在索引Person(“Jenny”, 0)处将内容置为”Newark”。
- 以map< T, U >::value_type的类型构造对象
完整代码如下:
#include <iostream>#include <cstring>#include <map>using namespace std;class Person{private: char *name; int age; friend class lesserAge;public: Person(const char *ch = NULL, int num = 0):age(num){ name = new char[strlen(ch)+1]; strcpy(name, ch); name[strlen(ch)] = '\0'; //cout << "name:" << name << endl; } Person(const Person &ps){ name = new char[strlen(ps.name)+1]; strcpy(name,ps.name); name[strlen(ps.name)] = '\0'; age = ps.age; } ~Person(){ delete[] name; } bool operator<(const Person &p) const { return strcmp(name, p.name) < 0; } friend ostream &operator<<(ostream &out, const Person &ps){ out << "(" << ps.name << ", " << ps.age << ")"; return out; }};class lesserAge{public: int operator() (const Person &p1, const Person &p2) const { return p1.age < p2.age; }};int main(){ pair<Person, char *> p[] = { pair<Person, char *>(Person("Gregg", 25), "Pittsburgh"), pair<Person, char *>(Person("Ann", 30), "Boston"), pair<Person, char *>(Person("Bill", 20), "Belmont")}; map<Person, char *> cities(p, p+3); map<Person, char *>::iterator it = cities.begin(); cities[Person("Kay", 40)] = "New York"; cities["Jenny"] = "Newark"; cities.insert(map<Person, char *>::value_type(Person("Kay", 40), "Detroit")); cities.insert(pair<Person, char *>(Person("Kay", 40), "Austin")); map<Person, char *>::iterator i; for(i = cities.begin(); i != cities.end(); i++) cout << (*i).first << ' ' << (*i).second << endl; cout << "-------------------------------------" << endl; cities[p[1].first] = "Chicago"; multimap<Person, char *> mCities(p, p+3); mCities.insert(pair<Person, char *>(Person("Kay", 40), "Austin")); mCities.insert(pair<Person, char *>(Person("Kay", 40), "Austin")); mCities.insert(pair<Person, char *>(Person("Kay", 40), "Detroit")); multimap<Person, char *>::iterator mi; for(mi = mCities.begin(); mi != mCities.end(); mi++) cout << mi->first << ' ' << mi->second << endl; cout << "-------------------------------------" << endl; (*(mCities.find(Person("Kay", 40)))).second = "New York"; for(mi = mCities.begin(); mi != mCities.end(); mi++) cout << mi->first << ' ' << mi->second << endl; return 0;}
阅读全文
0 0
- 浅析map和multimap应用的小程序
- Map容器与multimap容器应用的小知识
- map 和multimap 的区别
- multimap和set的应用
- std::map和multimap
- Map和MultiMap使用
- map和multimap
- STL---map 和 multimap
- c++map和multimap
- map和multimap 详解
- Map 和 multimap
- map和multimap
- map和multimap
- Map和multimap容器
- map和multimap
- map和multimap
- map/multimap的简介
- map/multimap的实例
- 深入分析java web 的ClassLoader工作机制(一)
- 使用@Async实现异步调用
- CSV格式整理,去除与上一行数据重复的单元格
- 画饼图
- Relevant Search.pdf 英文原版 免费下载
- 浅析map和multimap应用的小程序
- 四则运算的递归python实现
- 简单的MVP写法(一)
- node.js
- 豆瓣项目的思路总结
- Learning Django Web Development.pdf 英文原版 免费下载
- jenkins 构建脚本时javac编译出错自动停止任务
- scss
- Linux(CentOs) 下安装 Mysql