zoukankan      html  css  js  c++  java
  • STL之set && multiset

    一、set

    在了解关联容器set之前,让我们先来看看下面这个例子,并猜测该例子输出什么:

    // stl/set1.cpp
    
       #include <iostream>
       #include <set>
    
       int main()
       {
           //type of the collection
           typedef std::set<int> IntSet;
    
           IntSet coll;        //set container for int values
    
           /* insert elements from 1 to 6 in arbitray order
            *- value 1 gets inserted twice
            */
           coll.insert(3);
           coll.insert(1);
           coll.insert(5);
           coll.insert(4);
           coll.insert(1);
           coll.insert(6);
           coll.insert(2);
    
           /* print all elements
            *- iterate over all elements
            */
           IntSet::const_iterator pos;
           for (pos = coll.begin(); pos != coll.end(); ++pos) {
               std::cout << *pos << ' ';
           }
           std::cout << std::endl;
       }

    其中,输出的结果为:1 2 3 4 5 6

    下面,我们根据该输出结果对关联容器set做一个分析:

    1. set元素的唯一性;

    2. set默认按照从小到大排序;This type uses the default sorting criterion, which sorts the elements by using operator <.

      如果你想要改变它的排序方法,需要传递额外的参数,例如:

     typedef set<int,greater<int> > IntSet;

      Note that you have to put a space between the two ">" characters. ">>" would be parsed as shift operator, which would result in a syntax error.

    二、multiset

    If you want to use a multiset rather than a set, you need only change the type of the container (the header file remains the same):

    						
       typedef multiset<int> IntSet;
    
    					

    A multiset allows duplicates, so it would contain two elements that have value 1. Thus, the output of the program would change to the following:

    						
       1 1 2 3 4 5 6

    例如:
    // stl/mmap1.cpp
    
       #include <iostream>
       #include <map>
       #include <string>
       using namespace std;
    
       int main()
       {
           //type of the collection
           typedef multimap<int, string> IntStringMMap;
    
           IntStringMMap coll;       //set container for int/string values
    
           //insert some elements in arbitrary order
           //- a value with key 1 gets inserted twice
           coll.insert(make_pair(5,"tagged"));
           coll.insert(make_pair(2,"a"));
           coll.insert(make_pair(1,"this"));
           coll.insert(make_pair(4,"of"));
           coll.insert(make_pair(6,"strings"));
           coll.insert(make_pair(1,"is"));
           coll.insert(make_pair(3,"multimap"));
    
           /* print all element values
            *- iterate over all elements
            *- element member second is the value
            */
           IntStringMMap::iterator pos;
           for (pos = coll.begin(); pos != coll.end(); ++pos) {
               cout << pos->second << ' ';
           }
           cout << endl;
       }


  • 相关阅读:
    ubuntu下无法在目录下创建文件夹,权限不足解决办法
    mongo中的模糊查询
    mysql中的模糊查询
    mysql安装与配置详情
    Django model中的class Meta详解
    kafka集群搭建
    myeclipse/eclipse添加Spket插件实现ExtJs4.2/ExtJs3智能提示
    博客园自定义标题、阅读目录、导航栏、活动的推荐&反对按钮
    IntelliJ IDEA 14 创建maven项目二
    EXT4.2--Ext Designer 使用
  • 原文地址:https://www.cnblogs.com/wiessharling/p/3987708.html
Copyright © 2011-2022 走看看