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本身只有进程的概念,而其所谓的“线程 ...
随机推荐
- java.lang.ClassNotFoundException: net.sf.json.JSONArray,java.lang.NoClassDefFoundError: net/sf/json/JSONArray jetty跑项目遇到的问题
2016-05-18 15:44:25 ERROR Dispatcher.error[user:|url:]:L38 - Dispatcher initialization failed Unable ...
- java socket client
用tornado做了个socket server.无奈联调的人员对接不上. 于是撸出了以下demo import java.io.*; import java.net.*; public class ...
- IDEA 配置 tomcat 启动内存
-server -XX:PermSize=128M -XX:MaxPermSize=256m
- LINUX优化得很好的sysctl.conf配置
最近找了个不错的sysctl.conf的优化参数,在网站响应上已经算不错了的,time超时连接据说几乎为0了. 系统:centos 5.x sysctl.conf配置参数: kernel.msgmn ...
- neutron 同一虚拟网卡的多个IP设置
neutron port-update <端口ID> --fixed-ip subnet_id=<子网ID/子网名>,ip_address=<IP地址> --fix ...
- [20160704]Addition program that use JOptionPane for input and output
//Addition program that use JOptionPane for input and output. import javax.swing.JOptionPane; public ...
- MVC RadioButton
本文介绍如何创建radiobutton. Step 1: 创建一个类用于获取所有的选项. public class Company { public string SelectedDepartment ...
- 【leetcode】First Missing Positive
First Missing Positive Given an unsorted integer array, find the first missing positive integer. For ...
- Effective C++ -----条款10: 令operator=返回一个reference to *this
比如: Widget& operator=(const Widget& rhs) { ... return* this; } 令赋值(assignment)操作符返回一个referen ...
- eclipse远程调试Tomcat方法[转]
转载自:http://blog.csdn.net/afgasdg/article/details/9236877 1.Linux中配置tomcat在catalina.sh中添加如下CATALINA_O ...