C++ Primer 学习笔记_10_标准模板库_map和set的对比

C++ Primer 学习笔记_10_标准模板库_map和set的对比

 

set

multiset

创建

set<int> str

multiset<string> str

插入

str.insert(8)

str.insert(“abc”)

遍历

set<int>::iterator iter

multiset< string >::iterator iter

输出

*iter

*iter

删除

n = str.erase(8)

删除个数只能是01

n = str.erase(“123”)

erase()返回删除元素的个数

清空

str.clear()

str.clear()

当前容量

str.size()

str.size()

查找

iter = str.find()

没有找到,返回str.end()

iter = str.find()

没有找到,返回str.end()

非结构体比较函数

struct myComp

{

  bool operator()(int a, int b)

{

return a > b;

}

}

 

定义:set<int, myComp> str

struct myComp

{

    bool operator()(string a, string b)

    {

       return a > b;

    }

};

multiset<string, myComp> str

结构体比较函数

(如果要由小到大排序,使用”>”号即可)

struct Info

{

  string name;

  float score;

  bool operator < (Info a) const

  {

    return a.score < score;

  }

}

struct Info

{

  string name;

  float score;

  bool operator < (Info a) const

  {

    return a.score < score;

  }

};

 

 

 

 

 

map

multimap

创建

map<string, float> str

multimap<string, double> str

插入

str[“Jack”] = 98.5

str.insert(pair<string, double>("Jack", 400))

遍历

map<string, float>::iterator iter

multiset<string, double>::iterator iter

输出

(*iter).first

(*iter).second

(*iter).first

(*iter).second

删除

n = str.erase(“Jack”)

删除个数,只能是01

n = str.erase(“Jack”)

erase()返回删除元素的个数

清空

str.clear()

str.clear()

当前容量

str.size()

str.size()

查找

iter = str.find()

没有找到,返回str.end()

iter = str.find()

没有找到,返回str.end()

非结构体比较函数

struct myComp

{

  bool operator()(int a, int b)

{

return a > b;

}

}

 

定义:set<int, char, myComp> str

struct myComp

{

  bool operator()(string a, string b)

{

return a > b;

}

}

 

定义:set< string, double, myComp> str

结构体比较函数

(如果要由小到大排序,使用”>”号即可)

struct Info

{

  string name;

  float score;

  bool operator < (Info a) const

  {

    return a.score < score;

  }

}

struct Info

{

  string name;

  float score;

  bool operator < (Info a) const

  {

    return a.score < score;

  }

}

 

 

参考 :

《C++ primer 第四版》

《ACM程序设计》



你可能感兴趣的:(C++,STL)