- 浏览: 498315 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (339)
- C# (2)
- Java集合 (7)
- Java设计模式 (15)
- Java基础 (31)
- Java-Spring (7)
- Java-Spring AOP (9)
- Java-Spring Transaction (6)
- Java-Hibernate (13)
- Jsp (7)
- JSTL (2)
- 加密解密 (13)
- sql (3)
- 数据库技术 (7)
- JQuery (2)
- css (3)
- JavaScript (19)
- Linux (34)
- 项目管理 (5)
- Tomcat (5)
- Oracle (4)
- axis2 (5)
- Linux c/c++ (40)
- Linux 防火墙及抓包分析 (10)
- Linux 环境配置 (3)
- Linux 高级命令 (14)
- Linux Server 配置 (9)
- c++ 内存管理 (4)
- JUnit (1)
- SSL 通信 (2)
- windows 系统调试 (8)
- 字符串处理 (8)
- 排序算法 (7)
- ACE (1)
- IT技术 (1)
- 敏捷开发 (1)
- TCPIP (4)
- 汇编语言 (7)
- STL (2)
- Struts (1)
- iBatis (3)
- 音视频开发 (2)
- Java多线程 (3)
- 架构设计 (2)
- Java网络编程 (1)
- Ubantu (0)
- Eclipse (2)
最新评论
-
df270464278:
请问博主有遇到中文乱码的问题吗?就是json字符串里面包含中文 ...
cur发送json字符串, post 请求 -
ykbj117:
你们知道刘绍华么?就是北邮的一个教授,专门研究WebRTC的资 ...
WebRTC -
隐形的翅膀:
不会用powershell
去除SVN标志 -
lengbamboo:
改注册表比较危险,给个powershell的脚本:powers ...
去除SVN标志 -
hedong56:
[/b][b][i][/i][u][/u][flash=20 ...
JAVASCRIPT定义对象的四种方式
1. map中的元素其实就是一个pair.
2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.
3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映射后近似随机存放).所以遍历的时候有些效率差别.
4. 判断有没有找到该键的内容可以这样:
std::map<std::string,Record>::const_iterator cIter;
cIter = stdfile.m_map.find(s);
if (cIter == stdfile.m_map.end()) // 没找到就是指向END了
{
m_vecMoreFile.push_back(s);
}
如果键的内容是指针的话, 应该用NULL指针也可以判断了.
5. 遍历:
std::map<std::string,Record>::iterator iter;
for (iter = m_map.begin(); iter != m_map.end(); iter++)
{
std::string s = iter->second.filename;
}
由于map内容可以相当一个PAIR, 那就简单了, 用iter->second就可以取得值了.
可顺便转个其它的几种用法:
1 头文件
#include <map>
2 定义
map<string, int> my_Map;
或者是typedef map<string, int> MY_MAP;
MY_MAP my_Map;
3 插入数据
(1) my_Map["a"] = 1;
(2) my_Map.insert(map<string, int>::value_type("b",2));
(3) my_Map.insert(pair<string,int>("c",3));
(4) my_Map.insert(make_pair("d",4));
4 查找数据和修改数据
(1) int i = my_Map["a"];
my_Map["a"] = i;
(2) MY_MAP::iterator my_Itr;
my_Itr.find("b");
int j = my_Itr->second;
my_Itr->second = j;
不过注意,键本身是不能被修改的,除非删除。
5 删除数据
(1) my_Map.erase(my_Itr);
(2) my_Map.erase("c");
还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
6 迭代数据
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {}
7 其它方法
my_Map.size() 返回元素数目
my_Map.empty() 判断是否为空
my_Map.clear() 清空所有元素
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等
遍历:
#include<iostream>
#include <map>
using namespace std;
int main(){
map<int,int>M;
M[1]=2;
M[2]=3;
map<int,int>::iterator iter;
for (iter = M.begin(); iter != M.end(); iter++)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
return 0;
}
总结:
find();
erase();
std::map<std::string, int> map;
map[std::string] = int;
第一个参数
2. map的键一般不能是指针, 比如int*, char*之类的, 会出错. 常用的就用string了,int也行.
3. map是个无序的容器, 而vector之类是有序的. 所谓有序无序是指放入的元素并不是按一定顺序放进去的, 而是乱序, 随机存放的(被映射后近似随机存放).所以遍历的时候有些效率差别.
4. 判断有没有找到该键的内容可以这样:
std::map<std::string,Record>::const_iterator cIter;
cIter = stdfile.m_map.find(s);
if (cIter == stdfile.m_map.end()) // 没找到就是指向END了
{
m_vecMoreFile.push_back(s);
}
如果键的内容是指针的话, 应该用NULL指针也可以判断了.
5. 遍历:
std::map<std::string,Record>::iterator iter;
for (iter = m_map.begin(); iter != m_map.end(); iter++)
{
std::string s = iter->second.filename;
}
由于map内容可以相当一个PAIR, 那就简单了, 用iter->second就可以取得值了.
可顺便转个其它的几种用法:
1 头文件
#include <map>
2 定义
map<string, int> my_Map;
或者是typedef map<string, int> MY_MAP;
MY_MAP my_Map;
3 插入数据
(1) my_Map["a"] = 1;
(2) my_Map.insert(map<string, int>::value_type("b",2));
(3) my_Map.insert(pair<string,int>("c",3));
(4) my_Map.insert(make_pair("d",4));
4 查找数据和修改数据
(1) int i = my_Map["a"];
my_Map["a"] = i;
(2) MY_MAP::iterator my_Itr;
my_Itr.find("b");
int j = my_Itr->second;
my_Itr->second = j;
不过注意,键本身是不能被修改的,除非删除。
5 删除数据
(1) my_Map.erase(my_Itr);
(2) my_Map.erase("c");
还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
6 迭代数据
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr) {}
7 其它方法
my_Map.size() 返回元素数目
my_Map.empty() 判断是否为空
my_Map.clear() 清空所有元素
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等
遍历:
#include<iostream>
#include <map>
using namespace std;
int main(){
map<int,int>M;
M[1]=2;
M[2]=3;
map<int,int>::iterator iter;
for (iter = M.begin(); iter != M.end(); iter++)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
return 0;
}
总结:
find();
erase();
std::map<std::string, int> map;
map[std::string] = int;
第一个参数
发表评论
-
C++析构函数为什么要为虚函数
2015-10-28 16:57 8011.为什么基类的析构函数是虚函数? 在实现多态时,当用基 ... -
#pragma 用法
2014-09-01 13:20 8811. #pragma comment(lib,&quo ... -
Linux 使用共享内存
2014-07-28 17:02 6621. 共享内存与消息队列的区别 消息队列在实现消息的收发时, ... -
Select Poll and EPoll
2014-07-28 14:46 321... -
GDB 调试
2014-06-13 09:56 915http://wiki.ubuntu.org.cn/%E7%9 ... -
采用Makefile编译C++ 多个文件
2014-06-12 14:00 130181. 假设我们下面几个c++文件 wherewhen.h ... -
Linux gcc 编译生成动态和静态库
2014-04-28 14:26 629一、基本概念 1.1什么是库 在windows平台和lin ... -
Linux epoll
2014-03-13 14:34 605int edfd = epoll_create(int siz ... -
套接字基础
2014-03-13 10:42 7011. int socket(int domain,int t ... -
常用的头文件
2014-02-25 10:29 7671. printf,snprintf need #inclu ... -
虚函数的几个误区
2013-12-16 17:54 756纯虚函数 1. C++ 子类没有实现父类的纯虚函数,则子类也 ... -
虚函数,纯虚函数,抽象类
2013-09-22 10:01 1108定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚 ... -
虚基类,虚函数,虚析构函数
2013-09-22 09:36 925继承的类的前面加上virt ... -
C++基础知识 -数组,指针与字符串
2013-09-10 20:00 11781. 数组 声明: int A[10],B[10] ... -
C++基础知识
2013-09-07 21:03 8121. typedef 自定义数据类型,就是给已有数据类型起一 ... -
记录日志
2013-09-03 05:25 864openlog syslog closelog exampl ... -
Linux C 常用函数
2013-09-03 05:17 7961. Linux 常用C函数 http://man.chin ... -
Linux 内存检查
2013-08-27 09:56 846在Linux下些C语言程序,最大的问题就是没有一个好的编程ID ... -
RTP网络视频传输
2013-08-17 07:02 1100http://javahigh1.iteye.com/blog ... -
ldconfig
2013-08-15 15:45 0如何设置自己的共享库目录?/etc/ld.so.conf下增加 ...
相关推荐
std::map<std::string, std::string> mapData = json.parseJson(jsonString); // 现在可以访问mapData中的数据 std::cout << "Name: " << mapData["name"] << std::endl; std::cout << "Age: " << mapData["age...
代码重点是hash_table,附加std::map与其做对比,实现的是一条sql语句:select c_nationkey, c_mktsegment, count(*), max(c_acctbal) from aaa_customer_1g group by c_nationkey, c_mktsegment order by c_...
在C++编程中,`std::map`是一个非常重要的关联容器,它提供了键值对(key-value pairs)的存储功能,常被用来实现字典或查找表的数据结构。`std::map`的主要特点是对每个键都唯一,且键值对中的键按照某种排序规则...
从逆向角度看C++ STL代码之std::map
1. **线程安全的std::map**:在C++标准库中,std::map不是线程安全的,这意味着在并发环境下,不同线程同时对map进行读写操作可能导致未定义的行为。为了在多线程环境下使用std::map,开发者通常需要手动添加锁来...
首先,`Mapt.h`可能是定义了一个名为`Mapt`的类,它可能封装了`std::map`的操作。在C++中,`std::map`是一个红黑树实现的关联容器,它包含键值对,每个键都是唯一的,并且可以通过键来访问对应的值。`std::map`的...
在C++编程中,`std::map`和`std::unordered_map`是两种常见的关联容器,它们都用于存储键值对,但实现机制和性能特点有所不同。本篇文章将深入探讨这两种容器在插入、遍历和查找操作上的差异,并通过实例分析它们...
在这个场景中,我们关注的是在C++ STL中的`map`容器中,使用字符串(`std::string`)作为键(key)与使用自定义结构体(struct)作为键在查找效率上的比较。`map`是一个关联容器,它提供了基于键的有序存储,通常...
在C++编程中,`std::map` 是一个关联容器,它存储键值对,并且按照键的顺序组织元素。在这个实例中,我们看到`map` 被用来存储整数(`int`)作为键和字符串(`string`)作为值,用于模拟学生信息的存储,例如学生的...
std::map<std::string, std::map<std::string, std::string>> _data; public: int32_t readInteger(std::string section, std::string key, int32_t defaultValue); float readFloat(std::string section, std:...
在这个特定的情境中,问题出在一个名为`CArray, int>`的自定义数组类,它在与`std::map`容器一起使用时遇到了这个问题。`std::map`在内部会使用复制构造函数来创建键值对的副本,因此如果类没有合适的复制构造函数,...
### C++ STL 中 `std::map` 和 `std::array` 的详细介绍及示例 #### 一、`std::map` 详解 `std::map` 是 C++ 标准模板库 (STL) 中的一个关联容器,它可以用来存储键值对。尽管描述中提到“包含可以重复的键值对”...
std::string name = config["person"]["name"].as<std::string>(); int age = config["person"]["age"].as(); ``` - **写入YAML**:`YAML::Emitter`类用于构建YAML输出。创建一个`YAML::Emitter`对象,然后调用各种...
在C++编程中,`std::map`是一个关联容器,它提供了一个有序的键值对集合。这个集合中的元素按照键的排序规则进行组织,通常这个排序是通过默认的比较函数`std::less<Key>`实现的,即键值从小到大排列。在本示例中,...
在C++编程中,"vectormap"的概念似乎是一种结合了`std::vector`和`std::map`特性的自定义容器。`std::vector`是一个动态数组,它提供了随机访问和高效的操作,如插入和删除元素。而`std::map`则是一个关联容器,它...
std::map<std::string, int> stdMap; stdMap["apple"] = 1; stdMap["banana"] = 2; stdMap["orange"] = 3; ``` `std::map`提供了如`find()`, `emplace()`, `erase()`, `operator[]`等方法。虽然`std::map`没有像`...
- 类中可以定义一个成员变量来保存ini文件的内容,如`std::map<std::string, std::map<std::string, std::string>> data;`,用以存储节和键值对。 - 使用`std::ifstream`打开ini文件,逐行读取,根据行首的`[`判断...
在C++编程中,`std::map`是一个关联容器,它按照键(key)的排序存储元素,每个键值对应一个值(value)。这个容器的主要优势在于它的高效查找能力,通常使用红黑树实现,查找、插入和删除的时间复杂度为O(logN)。...
在C++编程中,`std::map`和`std::vector`是两种非常重要的容器,它们各自具有独特的特性和用途。本篇文章将详细介绍这两种数据结构的用法,以及如何使用迭代器来操作它们。 首先,`std::map`是一个关联容器,它存储...