#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`容器是一种非常重要的关联容器,主要用于存储唯一元素,并且这些元素会根据其键值自动排序。`set`内部通常采用红黑树(一种自平衡的二叉...
理解并熟练使用STL是C++程序员必备的技能之一,它能帮助编写出高效、可读性强的代码。在面试中,对STL的深入理解不仅可以展示你的技术实力,还能表现出你对编程最佳实践的追求。因此,熟悉STL的各个部分并能够灵活...
C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且灵活的编程工具。STL的核心概念包括泛型编程、容器、迭代器、算法和函数对象,这些组件共同构成...
在“C++ STL中文版”这本书中,作者深入浅出地讲解了STL的基本概念、使用方法和实际应用,是学习C++ STL的宝贵资源。 STL主要由以下四个核心组件构成: 1. 容器:STL提供了一组预先定义好的容器类,如vector(动态...
在提供的资源中,"STL参考手册"和"STL帮助文档"提供了详尽的关于STL的使用方法和原理,中文版本便于初学者理解,英文版则可以帮助深化理解并与国际接轨。通过阅读这两份文档,读者可以深入学习如何利用STL有效地组织...
C/C++ STL(Standard Template Library,标准模板库)是C++编程语言中不可或缺的一部分,它提供了...通过中文文档`C C++ API.chm`,你可以深入学习每个组件的使用方法、接口和实现细节,以便更好地应用在实际项目中。
STL手册通常会详细阐述这些组件的使用方法,提供实例代码,帮助开发者快速理解和应用。 1. **容器** - **Vector**: 动态数组,支持随机访问,提供快速的元素插入和删除操作。 - **List**: 双向链表,适用于频繁...
C++ STL(Standard Template Library,标准模板库)是C++编程中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。这个压缩包“C++ STL标准程序库开发指南 源代码.rar”包含了C++ STL的源代码,对于...
C++ STL,全称为Standard Template Library(标准模板库),是C++编程语言中的一部分,它提供了丰富的容器、迭代器、算法和函数对象等组件,极大地简化了数据结构和算法的实现。余文溪的《C++ STL--数据结构与算法...
STL,全称为Standard Template Library(标准模板库),是C++编程中不可或缺的一部分,它包含了一系列高效、可重用的数据结构和算法。本开源项目旨在模拟实现一个小型STL,帮助开发者更深入地理解STL的工作原理和...
STL(Standard Template Library,标准模板库)是C++编程语言中的一个重要组成部分,它提供了一系列高效、可重用的数据结构和算法。在这个“stl_set.rar”压缩包中,作者分享了一个自己编写的STL库中的set实现,供...
STL则是C++中一个强大的工具集,它包含容器(如vector、list、set)、迭代器、算法和函数对象。STL的核心设计理念是泛型编程,这意味着它的组件可以应用于多种数据类型。例如,`std::vector`是一种动态数组,允许在...
"C++ STL 库函数总结" C++ STL 库函数总结是指 C++ 标准模板库...C++ STL 库函数总结中的集合(set)部分提供了一个强大的工具,用于解决实际问题。其成员函数和迭代器使得开发者可以方便地操作集合中的元素。
这篇“C++ STL编程轻松入门”文档将引导初学者快速掌握STL的核心概念和使用方法。 首先,STL中的容器是存储数据的主要结构,包括向量(vector)、列表(list)、集合(set)、映射(map)等。向量是一个动态数组,...
C++ STL 手册是一份宝贵的资源,它详尽地介绍了每个组件的使用方法、接口和注意事项。通过查阅该手册,开发者能够更深入地理解 STL,并在项目中有效地利用其功能。学习和掌握 STL 是 C++ 程序员必备的技能之一,对于...
这个"C++STL Source.rar"文件很可能包含了C++ STL的源代码,对于深入理解STL的工作原理和实现细节非常有帮助。 STL的核心组成部分包括: 1. 容器(Containers):这是STL的基础,提供了数据结构来存储和管理元素...
STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它为程序员提供了高效且可重用的数据结构和算法。STL的主要组成部分包括容器、迭代器、算法和函数对象,这些组件共同构成了...
在学习STL时,掌握其设计理念、工作原理和使用方法至关重要。实践是检验理解的最好方式,尝试编写使用STL的代码,解决实际问题,可以帮助你更好地掌握这一强大的工具。通过本教程,你将能够深入理解STL并将其应用到...
C++ STL提供了许多有用的算法,例如`sort`、`transform`、`find`、`count`等,用于对容器中的元素进行排序、变换、查找和统计等操作。这些算法可以大大提高程序的效率和可读性。 C++ STL提供了许多有用的容器和算法...
接下来,我们将围绕“深入C++STL中文版”这一主题展开详细的讲解,涵盖C++ STL的基本概念、核心组件以及如何利用STL提高编程效率等方面。 ### C++ STL简介 C++标准模板库(Standard Template Library,简称STL)是...