zoukankan      html  css  js  c++  java
  • std::set

    •  

      std::set

      • 不重复key
      • 默认less排序
      • 代码
        • #include <iostream>
          #include <set>
          
          class Person
          {
          public:
                  Person(const std::string& name, const std::size_t nld)
                  {
                          Name = name;
                          Nid = nld;
                  }
          
                  const std::string& GetName() const
                  {
                          return Name;
                  }
          
                  const void SetId()
                  {
                          Nid++;
                  }
          
                  const std::size_t GetId() const
                  {
                          return Nid;
                  }
          private:
                  std::string Name;
                  std::size_t Nid;
          };
          //仿函数
          struct PersonIdComparer: public std::binary_function<Person, Person, bool>
          {
                  bool operator()(const Person& p1, const Person& p2) const
                  {
                          return (p1.GetId() < p2.GetId()) ? true : false;
                  }
          };
          
          struct PersonNameComparer: public std::binary_function<Person, Person, bool>
          {
                  bool operator()(const Person& p1, const Person& p2) const
                  {
                          return (p1.GetName() < p2.GetName()) ? true : false;
                  }
          };
          
          int main()
          {
                  const std::size_t nSize = 3;
                  const Person personArray[nSize] =
                  {
                          Person("Tom", 1),
                          Person("Jason", 2),
                          Person("Alice", 3)
                  };
          
                  std::set<Person,PersonIdComparer> ps1(personArray, personArray + nSize);
          
                  //插入元素
                  ps1.insert(Person("Bill",4));
          
                  //删除元素
                  std::set<Person, PersonIdComparer>::iterator it = ps1.begin();
                  std::advance(it, 1);
                  ps1.erase(it);
          
                  for(it = ps1.begin(); it != ps1.end(); ++it)
                  {
                          const_cast<Person&>(*it).SetId();
                          std::cout<<"Id:"<<(*it).GetId()<<"Name:"<<(*it).GetName()<<std::endl;
                  }
                  return 0;
          }
                                         
          

            

      • set相关算法
        • set_union
        • set_intersection
        • set_difference
    • set不允许通过直接迭代器改变成员
      • const_cast<Person&>(*it).SetId();//必须使用引用,否则只能修改临时变量
        

          


  • 相关阅读:
    win7纯净环境下搭建深度学习环境:Python+TensorFlow+jupyter
    linux安全配置-将ssh服务隐藏于Internet(端口碰撞)
    S3C2440小板子-烧写笔记
    SecureCRT使用技巧
    Linux 下设置静态IP
    win7设置虚拟网卡以及如何设置静态IP
    第八章学习小结
    第七章学习小结
    第六章学习小结
    第五章学习小结
  • 原文地址:https://www.cnblogs.com/zhaohu/p/9426705.html
Copyright © 2011-2022 走看看