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

C++ STL set::find的用法

 
阅读更多
#include <iostream>
#include <set>
using namespace std;

/*Student结构体*/
struct Student {
    string name;
    int age;
    string sex;
};

/*“仿函数"。为Student set指定排序准则*/
class studentSortCriterion {
    public:
        bool operator() (const Student &a, const Student &b) const {
            /*先比较名字;若名字相同,则比较年龄。小的返回true*/
            if(a.name < b.name)
                return true;
            else if(a.name == b.name) {
                if(a.age < b.age)
                    return true;
                else
                    return false;
            } else
                return false;
        }
};

int main()
{
    set<Student, studentSortCriterion> stuSet;

    Student stu1, stu2;
    stu1.name = "张三";
    stu1.age = 13;
    stu1.sex = "male";

    stu2.name = "李四";
    stu2.age = 23;
    stu2.sex = "female";

    stuSet.insert(stu1);
    stuSet.insert(stu2);

    /*构造一个测试的Student,可以看到,即使stuTemp与stu1实际上并不是同一个对象,
     *但当在set中查找时,仍会查找成功。这是因为已定义的studentSortCriterion的缘故。
     */
    Student stuTemp;
    stuTemp.name = "张三";
    stuTemp.age = 13;

    set<Student, studentSortCriterion>::iterator iter;
    iter = stuSet.find(stuTemp);
    if(iter != stuSet.end()) {
        cout << (*iter).name << endl;
    } else {
        cout << "Cannot fine the student!" << endl;
    }

    return 0;
}

上次面阿里巴巴。面试官问了我这样一个问题,“C++ STL中的set是如何实现的”。当时只答了二叉树,回来查下书,原来一般是红黑树,后悔没好好记住啊。。。

接着,面试官又考了我一道这样的编程题:定义一个Student结构体,包括name和age等数据,要求编程实习在set中查找一个name == "张三", age == 13的操作。

本来set自己用得不多,当时一下懵了。回来查阅《C++标准程序库》这本书,自己试着实现了下。

分享到:
评论

相关推荐

    C++_STL之set容器使用方法

    ### C++ STL之set容器使用方法 #### 一、引言 在C++标准模板库(STL)中,`set`容器是一种非常重要的关联容器,主要用于存储唯一元素,并且这些元素会根据其键值自动排序。`set`内部通常采用红黑树(一种自平衡的二叉...

    C++ STL程序员面试题

    理解并熟练使用STL是C++程序员必备的技能之一,它能帮助编写出高效、可读性强的代码。在面试中,对STL的深入理解不仅可以展示你的技术实力,还能表现出你对编程最佳实践的追求。因此,熟悉STL的各个部分并能够灵活...

    C++ STL教程pdf

    C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且灵活的编程工具。STL的核心概念包括泛型编程、容器、迭代器、算法和函数对象,这些组件共同构成...

    c++ STL中文版

    在“C++ STL中文版”这本书中,作者深入浅出地讲解了STL的基本概念、使用方法和实际应用,是学习C++ STL的宝贵资源。 STL主要由以下四个核心组件构成: 1. 容器:STL提供了一组预先定义好的容器类,如vector(动态...

    C/C++ STL参考手册 STL帮助文档 中文/英文版都有

    在提供的资源中,"STL参考手册"和"STL帮助文档"提供了详尽的关于STL的使用方法和原理,中文版本便于初学者理解,英文版则可以帮助深化理解并与国际接轨。通过阅读这两份文档,读者可以深入学习如何利用STL有效地组织...

    c/c++ STL api 文档

    C/C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了...通过中文文档`C C++ API.chm`,你可以深入学习每个组件的使用方法、接口和实现细节,以便更好地应用在实际项目中。

    c++标准库STL手册

    STL手册通常会详细阐述这些组件的使用方法,提供实例代码,帮助开发者快速理解和应用。 1. **容器** - **Vector**: 动态数组,支持随机访问,提供快速的元素插入和删除操作。 - **List**: 双向链表,适用于频繁...

    C++ STL标准程序库开发指南 源代码.rar

    C++ STL(Standard Template Library,标准模板库)是C++编程中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。这个压缩包“C++ STL标准程序库开发指南 源代码.rar”包含了C++ STL的源代码,对于...

    C++ STL--数据结构与算法实现(余文溪)示例程序代码.rar

    C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中的一部分,它提供了丰富的容器、迭代器、算法和函数对象等组件,极大地简化了数据结构和算法的实现。余文溪的《C++ STL--数据结构与算法...

    C++开源项目:模拟实现小型STL

    STL,全称为Standard Template Library(标准模板库),是C++编程中不可或缺的一部分,它包含了一系列高效、可重用的数据结构和算法。本开源项目旨在模拟实现一个小型STL,帮助开发者更深入地理解STL的工作原理和...

    stl_set.rar_STL 自己_STLset_theewh6

    STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。在这个“stl_set.rar”压缩包中,作者分享了一个自己编写的STL库中的set实现,供...

    C++库函数及STL算法

    STL则是C++中一个强大的工具集,它包含容器(如vector、list、set)、迭代器、算法和函数对象。STL的核心设计理念是泛型编程,这意味着它的组件可以应用于多种数据类型。例如,`std::vector`是一种动态数组,允许在...

    C++ STL库函数总结(纯手打,主要偏向ACM竞赛方面使用)

    "C++ STL 库函数总结" C++ STL 库函数总结是指 C++ 标准模板库...C++ STL 库函数总结中的集合(set)部分提供了一个强大的工具,用于解决实际问题。其成员函数和迭代器使得开发者可以方便地操作集合中的元素。

    C++ STL编程轻松入门

    这篇“C++ STL编程轻松入门”文档将引导初学者快速掌握STL的核心概念和使用方法。 首先,STL中的容器是存储数据的主要结构,包括向量(vector)、列表(list)、集合(set)、映射(map)等。向量是一个动态数组,...

    C++STL手册.rar

    C++ STL 手册是一份宝贵的资源,它详尽地介绍了每个组件的使用方法、接口和注意事项。通过查阅该手册,开发者能够更深入地理解 STL,并在项目中有效地利用其功能。学习和掌握 STL 是 C++ 程序员必备的技能之一,对于...

    C++STL Source.rar

    这个"C++STL Source.rar"文件很可能包含了C++ STL的源代码,对于深入理解STL的工作原理和实现细节非常有帮助。 STL的核心组成部分包括: 1. 容器(Containers):这是STL的基础,提供了数据结构来存储和管理元素...

    stl的学习:c++ STL

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且可重用的数据结构和算法。STL的主要组成部分包括容器、迭代器、算法和函数对象,这些组件共同构成了...

    【c++ Stl教程】stl使用及stl编程

    在学习STL时,掌握其设计理念、工作原理和使用方法至关重要。实践是检验理解的最好方式,尝试编写使用STL的代码,解决实际问题,可以帮助你更好地掌握这一强大的工具。通过本教程,你将能够深入理解STL并将其应用到...

    c++ STL思维导图(自己总结)

    C++ STL提供了许多有用的算法,例如`sort`、`transform`、`find`、`count`等,用于对容器中的元素进行排序、变换、查找和统计等操作。这些算法可以大大提高程序的效率和可读性。 C++ STL提供了许多有用的容器和算法...

    深入C++STL中文版

    接下来,我们将围绕“深入C++STL中文版”这一主题展开详细的讲解,涵盖C++ STL的基本概念、核心组件以及如何利用STL提高编程效率等方面。 ### C++ STL简介 C++标准模板库(Standard Template Library,简称STL)是...

Global site tag (gtag.js) - Google Analytics