map这个小妖精(*/ω\*)

1. map是虾米咩

redis晓得咩,就是那个key-value结构的数据库,map这家伙其实就是key-value结构的容器。容器是虾米咩,还好之前看过有关的一丁点,晓得C++里有这个一种类存在,它的名字就叫做容~器~类~~~网上说,容器就是用来存储数据的咩。map是标准STL关联容器,反正有概念就好得了咩,不必太纠结了o( ̄ヘ ̄o#)

2. 它是谁家小妖精咩

来来来,让俺们看看,这小妖精的头文件是哪个咩

#include 

既然是map,当然是map家的,有木有猜到咩哈哈哈哈

3. 小妖精长什么样子咩

map<类型1, 类型2> 变量名称

比如酱紫咩

map
 key_value;

4. 小妖精有虾米本领咩

4.1 赋值

map变量有了,俺要给它赋值咩,肿么办呢

听说map有个叫做insert的方法阔以插入数据,插插插

噫,有种污了的错觉绝不是俺的错(*/ω\*),除了使用insert外当然可以它还可以像数组那样通过下标赋值,比如酱紫:map[key] = value

下面是例子咩

#include 
#include 
#include 
using namespace std; int main(int argc, char **argv){    map
 key_value;        key_value.insert(pair
("one", "yes_one")); //插插插\(≧▽≦)/    key_value["two"] = "yes_two"; //下标赋值咩O(∩_∩)O~~                                                return 0;}

4.2 iterator

cplusplus说map家的成员变量有酱酱酿酿的,但俺不认识,俺只认识iterator,所以就说说iterator咩~

iterator这家伙有两个成员变量,一个叫first,存储map的key,一个叫second,存储map的value

而且使用iterator就阔以遍历map晓得咩,就像酱紫滴

#include 
#include 
#include 
using namespace std;            int main(int argc, char **argv){               map
 key_value;    map
::iterator iter;                key_value.insert(pair
("one", "yes_one"));    key_value["two"] = "yes_two";                for(iter=key_value.begin(); iter!=key_value.end(); iter++) { //遍历看这里咩\(≧▽≦)/        cout<
first<<"->"<
second<

4.3 查找

俺啾一下扔了两个数据进map里了,可俺想找到这两个数据肿么办哦QAQ,因为map是key-value结构,当然是通过key来寻找了,map有个小触手叫做find~find~哟

调用find方法,会返回iterator。

如果find木有找到,则iterator等于map.end(),不要在这个时候试图打印iterator的key和value,因为会发生段错误,虽然俺知道会是这个结果,但俺还是闲得去尝试了%>_<%

#include 
#include 
#include 
  using namespace std;            int main(int argc, char **argv){               map
 key_value;    map
::iterator iter;                key_value.insert(pair
("one", "yes_one"));    key_value["two"] = "yes_two";    iter = key_value.find("one");  //看这里find小触手                if (iter == key_value.end()) {        cout<<"iter == key_value.end()\n";        return -1;    }                       cout<<"iter->one = "<
first<
<<"iter->two = "<
second<

4.4 删除

因为作死去打印不存在的key和value,俺如愿以偿(才木有哼哼)地dump了,所以俺很生气后果很严重,俺要把插进去的数据揪出来扔掉T_T

删除数据阔以用erase,清空数据阔以用clear

#include 
#include 
#include 
  using namespace std;         int main(int argc, char **argv){            map
 key_value;    map
::iterator iter;             key_value.insert(pair
("one", "yes_one"));    key_value["two"] = "yes_two";    key_value["three"] = "yes_three";    for (iter=key_value.begin(); iter!=key_value.end(); iter++) {        cout<
first<<"->"<
second<
<
first<<"->"<
second<
<
first<<"->"<
second<
<
yes_onethree->yes_threetwo->yes_twoone->yes_onethree->yes_three*/

噫,又写了一堆废话,不晓得未来的俺看到后会不会有种想掐死俺的冲动咩哈哈哈