`
modabobo
  • 浏览: 508051 次
文章分类
社区版块
存档分类
最新评论

std::map

 
阅读更多

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;

第一个参数

分享到:
评论

相关推荐

    c++中hash_table以及std::map应用案例

    代码重点是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_...

    MFC,C++,C语言 json转换成std::map源码,无需编译,无需关心引用位置,直接引用即可使用

    mfc中引用#include "MyJson.h",就可以直接使用了,代码简单方便,总共2个个文件,安全明了,不需要复杂的引用编译,只需要一个类就可以完成json字符串转map,

    从逆向角度看C++ STL代码之std::map

    从逆向角度看C++ STL代码之std::map

    ini 文件操作

    std::map&lt;std::string, std::map&lt;std::string, std::string&gt;&gt; _data; public: int32_t readInteger(std::string section, std::string key, int32_t defaultValue); float readFloat(std::string section, std:...

    stl-views.gdb

    # std::map,T&gt; -- via pmap or pmap_member command # std::multimap,T&gt; -- via pmap or pmap_member command # std::set&lt;T&gt; -- via pset command # std::multiset&lt;T&gt; -- via pset command # std::deque&lt;T&gt; -- via ...

    线程安全的std :: map和无锁映射的速度

    线程安全指针和无争用共享互斥体的使用和测试示例

    std map容器用法总结

    c++中标准STL容器MAP的用法总结,对C++学习者有用.

    MFC序列化到xml文档,支持STL的vector,map,pair

    最简单的MFC序列化扩展,实现输出到XML文档,支持STL的vector、map等容器和pair。

    dense_hash_map:STD的简单替代

    jg :: dense_hash_map 一个简单的std::unordered_map替代品,具有更好的性能,但失去了稳定的寻址方式,这是一种折衷方案。 在此处查看此哈希图的详细说明: : 生成状态: 特拉维斯(Travis):

    自定义STL std :: allocator替换可提高性能

    通过替代STL std :: allocator的固定块来防止堆碎片错误并提高执行速度

    模糊查找定义

    模糊查找定义一、 只匹配词组的模糊查找二、 对单词和词组都进行匹配

    A tiny JSON library for C++11.

    A Json object represents any JSON value: null, bool, number (int or double), string (std::string), array (std::vector), or object (std::map). Json objects act like values. They can be assigned, ...

    多表达式分解与循环引用检查

    std::map&lt;std::string, TOPS&gt; Exps; std::map&lt;std::string, TResult&gt; Results; std::map&lt;std::string, TOPS&gt; AtomOps; Exps.clear(); Results.clear(); TOPS tmp; tmp.clear(); tmp.push_back("b"); tmp....

    art_map:实验性病

    它们主要源于以下事实: art::set和art::map旨在分别替代std::set和std::map 。 这意味着art::set和art::map必须满足Container , AllocatorAwareContainer , AssociativeContainer和ReversibleContainer ,而...

    myostream:方便的输出,适用于所有可迭代项目的容器类型

    C ++中std :: basic_ostream的扩展该库支持所有项可迭代的容器类型及其组合类型的...: unordered_set std :: unordered_multiset std :: map std :: multimap std :: unordered_map std :: unordered_multimap介绍类

    MimicMap:基于std的排序关联容器

    基于模仿std :: map的std :: vector的排序关联容器。 用法 与std :: map几乎相同,但是所有容器元素都存储在单个std :: vector中。 如果插入零星的关键元素,则MimicMap会自动在std :: vector中完成差距元素。 您...

    windows下C++对象的反射功能

    支持的类型:bool、char、int、float、double、std::vector、std::map、std::string、pointer、reference、array、CString、CMap、CArray 等常见类型。 具体使用说明见:...

    advprogram-2021

    这是UET课程中高级课程实践的描述 INT2215-02:N1,N2 PM307-G2,星期...std :: stack和std :: queue关联容器:std :: map和std :: set作业05容器适配器:std :: stack和std :: queue关联容器:std :: map和std :: set

    哈希表(HashTable)C++实现.docx

    当创建哈希表(HashTable)时,我们通常会使用标准模板库(STL)中的`std::unordered_map`。这是一个简单的C++代码示例,演示如何使用`std::unordered_map`来实现哈希表: #include #include &lt;unordered_map&gt; #...

    C++中文汉字转拼音

    C++,采用“拼音-中文”的数据字典的方式实现中文汉字转拼音,兼容多音字,字典为txt,后期可拓展易维护。在STL的map中查找效率16毫秒左右。

Global site tag (gtag.js) - Google Analytics