Linux环境下stl库使用(map)
例子1:
testMap.cpp
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
map<int, string> Employees;
// 1) Assignment using array index notation
Employees[] = "Mike C.";
Employees[] = "Charlie M.";
Employees[] = "David D.";
Employees[] = "John A.";
Employees[] = "Peter Q.";
cout << ] << endl << endl;
cout << "Map size: " << Employees.size() << endl;
for( map<int,string>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}
}
编译与运行:
Compile: g++ testMap.cpp Run: ./a.out Employees[]=Charlie M. Map size: : David D. : Charlie M. : Mike C. : Peter Q. : John A.
例子2:
testMap2.cpp
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
map<string, int> Employees;
// Examples of assigning Map container contents
// 1) Assignment using array index notation
Employees[;
Employees[;
// 2) Assignment using member function insert() and STL pair
Employees.insert(std::pair<));
// 3) Assignment using member function insert() and "value_type()"
Employees.insert(map<));
// 4) Assignment using member function insert() and "make_pair()"
Employees.insert(std::make_pair());
cout << "Map size: " << Employees.size() << endl;
for( map<string, int>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}
}
编译与运行:
Compile: g++ testMap.cpp Run: ./a.out Map size: Charlie M.: David D.: John A.: Mike C.: Peter Q.:
testMap3.cpp
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
struct cmp_str
{
bool operator()(char const *a, char const *b)
{
;
}
};
int main()
{
map<char *, int, cmp_str> Employees;
// Examples of assigning Map container contents
// 1) Assignment using array index notation
Employees[;
Employees[;
// 2) Assignment using member function insert() and STL pair
Employees.insert(std::pair<));
// 3) Assignment using member function insert() and "value_type()"
Employees.insert(map<));
// 4) Assignment using member function insert() and "make_pair()"
Employees.insert(std::make_pair(());
cout << "Map size: " << Employees.size() << endl;
for( map<char *, int, cmp_str>::iterator ii=Employees.begin(); ii!=Employees.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}
}
编译与运行:
Compile: g++ testMap.cpp Run: ./a.out Map size: Charlie M.: David D.: John A.: Mike C.: Peter Q.:
testMap4.cpp
#include <iostream>
#include <map>
using namespace std;
class AAA
{
friend ostream &operator<<(ostream &, const AAA &);
public:
int x;
int y;
float z;
AAA();
AAA(const AAA &);
~AAA(){};
AAA &operator=(const AAA &rhs);
int operator==(const AAA &rhs) const;
int operator<(const AAA &rhs) const;
};
AAA::AAA() // Constructor
{
x = ;
y = ;
z = ;
}
AAA::AAA(const AAA ©in) // Copy constructor to handle pass by value.
{
x = copyin.x;
y = copyin.y;
z = copyin.z;
}
ostream &operator<<(ostream &output, const AAA &aaa)
{
output << aaa.x << ' ' << aaa.y << ' ' << aaa.z << endl;
return output;
}
AAA& AAA::operator=(const AAA &rhs)
{
this->x = rhs.x;
this->y = rhs.y;
this->z = rhs.z;
return *this;
}
int AAA::operator==(const AAA &rhs) const
{
;
;
;
;
}
int AAA::operator<(const AAA &rhs) const
{
;
;
;
;
}
main()
{
map<string, AAA> M;
AAA Ablob ;
Ablob.x=;
Ablob.y=;
Ablob.z=4.2355;
M["A"] = Ablob;
Ablob.x=;
M["B"] = Ablob;
Ablob.z=3.2355;
M["C"] = Ablob;
Ablob.x=;
Ablob.y=;
Ablob.z=7.2355;
M["D"] = Ablob;
for( map<string, AAA>::iterator ii=M.begin(); ii!=M.end(); ++ii)
{
cout << (*ii).first << ": " << (*ii).second << endl;
}
;
}
编译与运行:
Compile: g++ testMap.cpp Run: ./a.out Output: A: 4.2355 B: 4.2355 C: 3.2355 D: 7.2355
testMap5.cpp
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
// Compare (<) function not required since it is built into string class.
// else declaration would comparison function in multimap definition.
// i.e. multimap<string, int, compare> m;
multimap<string, int> m;
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
cout << "Number of elements with key a: " << m.count("a") << endl;
cout << "Number of elements with key b: " << m.count("b") << endl;
cout << "Number of elements with key c: " << m.count("c") << endl;
cout << "Elements in m: " << endl;
for (multimap<string, int>::iterator it = m.begin();
it != m.end();
++it)
{
cout << " [" << (*it).first << ", " << (*it).second << "]" << endl;
}
pair<multimap<string, int>::iterator, multimap<string, int>::iterator> ppp;
// equal_range(b) returns pair<iterator,iterator> representing the range
// of element with key b
ppp = m.equal_range("b");
// Loop through range of maps of key "b"
cout << endl << "Range of \"b\" elements:" << endl;
for (multimap<string, int>::iterator it2 = ppp.first;
it2 != ppp.second;
++it2)
{
cout << " [" << (*it2).first << ", " << (*it2).second << "]" << endl;
}
// Can't do this (??)
// cout << ppp.first << endl;
// cout << ppp.second << endl;
m.clear();
}
编译与运行:
#include <string.h>
#include <iostream>
#include <map>
#include <utility>
using namespace std;
int main()
{
// Compare (<) function not required since it is built into string class.
// else declaration would comparison function in multimap definition.
// i.e. multimap<string, int, compare> m;
multimap<string, int> m;
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
m.insert(pair<));
cout << "Number of elements with key a: " << m.count("a") << endl;
cout << "Number of elements with key b: " << m.count("b") << endl;
cout << "Number of elements with key c: " << m.count("c") << endl;
cout << "Elements in m: " << endl;
for (multimap<string, int>::iterator it = m.begin();
it != m.end();
++it)
{
cout << " [" << (*it).first << ", " << (*it).second << "]" << endl;
}
pair<multimap<string, int>::iterator, multimap<string, int>::iterator> ppp;
// equal_range(b) returns pair<iterator,iterator> representing the range
// of element with key b
ppp = m.equal_range("b");
// Loop through range of maps of key "b"
cout << endl << "Range of \"b\" elements:" << endl;
for (multimap<string, int>::iterator it2 = ppp.first;
it2 != ppp.second;
++it2)
{
cout << " [" << (*it2).first << ", " << (*it2).second << "]" << endl;
}
// Can't do this (??)
// cout << ppp.first << endl;
// cout << ppp.second << endl;
m.clear();
}
参考:
http://www.yolinux.com/TUTORIALS/CppStlMultiMap.html
Linux环境下stl库使用(map)的更多相关文章
- Linux环境下stl库使用(vector)
step1: #include <iostream> #include <vector> #include <string> using namespace std ...
- PCL库在Linux环境下的编译安装
PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...
- Linux环境下段错误的产生原因及调试方法小结(转)
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...
- Linux环境下段错误的产生原因及调试方法小结
转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...
- 【转】【调试技巧】Linux环境下段错误的产生原因及调试方法小结
本文转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/segmentation-fault-in-linux.html 1. 段错误是什么 ...
- Linux环境下段错误的产生原因及调试方法小结【转】
转自:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...
- 转:Linux环境下段错误的产生原因及调试方法小结
源地址:http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 补充:http://baike.baidu.com/link ...
- linux环境下学习使用pro*c/c++工具
1.proc是oracle用来预编译嵌入SQL语句的c程序. 2.如何使用proc工具 在Linux环境下,首先确保gcc编译器正常使用,安装oracle数据库或者客户端,一般就会默认安装pro*c/ ...
- 多线程编程之Linux环境下的多线程(一)
一.Linux环境下的线程 相对于其他操作系统,Linux系统内核只提供了轻量级进程的支持,并未实现线程模型.Linux是一种“多进程单线程”的操作系统,Linux本身只有进程的概念,而其所谓的“线程 ...
随机推荐
- Python自动化之sqlalchemy关联查询
外键关联 from sqlalchemy import ForeignKey from sqlalchemy.orm import relationship class Address(Base): ...
- 自带openJDK,如何切换成Oracle JDK
1.去Oracle官网下载最新的jdk,解压,配置环境变量(直接改 /etc/profile) 参考:http://www.cnblogs.com/aaronhoo/p/5293118.html 2. ...
- PHP socket编程需要了解的一些基本知识
前面讲到了 fsockopen 的各种情况,其中涉及了很多其它知识,比如chunked分段传输,Keep-Alive,HTTP头字段等额外的知识,如果对这些知识一知半解,会影响对 PHP 的 sock ...
- 解决vi/vim中粘贴会在行首多很多缩进和空格的问题
解决vi/vim中粘贴会在行首多很多缩进和空格的问题 secureCRT会将你原来的文本原封不动的按照字符串的样式发送给服务器.所以当你的服务器上的vim设置为autoindent的话,在i模式下,那 ...
- 【iOS开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条上的文字和按钮以及各种跳转
http://blog.csdn.net/weisubao/article/details/39646739?utm_source=tuicool&utm_medium=referral (1 ...
- MapReduce 程序运行报错 java.lang.ClassNotFoundException解决方法
在创建自定义的Mapper时候,编译正确,但上传到集群执行时出现错误: 11/16/05 22:53:16 INFO mapred.JobClient: Task Id : attempt_20111 ...
- google API 点连线
这个是模拟的数据,用于测试,为了方便学习 弹出框信息都是固定的,以及操作都不是写的循环,实际开发用 setInterval 或者for 以减少冗余. <!DOCTYPE html> < ...
- nginx做本地目录映射
有时候需要访问服务器上的一些静态资源,比如挂载其他设备上的图片到本地的目录,而本地的目录不在nginx根目录下,这个时候就需要简单的做一下目录映射来解决,比如想通过浏览器http://ip/image ...
- Python批量修改文件名-后缀
LyncLynn用途: 批量修改文件格式,文件名后缀. #Version: V1.0 #Author:lynclynn #Description:Change the filename #Create ...
- C#传真传址 结构体
1.传真 传址 namespace 传值_传址 { class Program { //格式1:无参无返 public void LeiJia() { Console.Write("请输入 ...