-
C++ partition 和stable_partition 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:177
partition 可直译为分组,partition() 函数可根据用户自定义的筛选规则,重新排列指定区域内存储的数据,使其分为 2 组,第一组为符合筛选条件的数据,另一组为不符合筛选条件的数据。 举个例子,假设有一个数组 a[9],其存储数据如下: 1 2 3 4 5 6 7 8 9[详细]
-
C++ partition_copy 函数详解
所属栏目:[语言] 日期:2022-07-17 热度:104
《C++ partition()和stable_partition()函数》一节中,已经详细介绍了 partition() 和 stable_partition() 函数的功能和用法。不知道读者是否发现,这 2 个函数在实现功能时,都直接修改了原序列中元素的存储位置。 而在某些场景中,我们需要类似 partitio[详细]
-
C++ find函数用法详解
所属栏目:[语言] 日期:2022-07-17 热度:155
find() 函数本质上是一个模板函数,用于在指定范围内查找和目标元素值相等的第一个元素。 如下为 find() 函数的语法格式: InputIterator find (InputIterator first, InputIterator last, const T val); 其中,first 和 last 为输入迭代器,[first, last)[详细]
-
Qt是什么?Qt简介很全面
所属栏目:[语言] 日期:2022-07-16 热度:120
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。 Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,[详细]
-
Qt和其它GUI库的比较
所属栏目:[语言] 日期:2022-07-16 热度:165
世界上的 GUI 库多如牛毛,有的跨平台,有的专属于某个操作系统;有的只有 UI 功能,有的还融合了网络通信、多媒体处理、数据库访问等底层功能。 Windows 下的 GUI 库 Windows 下的 GUI 解决方案比较多: 基于 C++ 的有 Qt、MFC、WTL、wxWidgets、DirectUI[详细]
-
学习QML或是C++
所属栏目:[语言] 日期:2022-07-16 热度:183
Qt4 时代的主流就是传统部件(或叫控件)编程,所用的语言一般是 C++。 Qt5 诞生之时,正是手机移动设备蓬勃发展的时候,而传统的 C++ 部件编写的界面对手机应用程序非常方便,比如手机屏幕显示随意翻转, 这在传统桌面程序里基本遇不到,谁会将 22 寸显示[详细]
-
C++ lower_bound 函数用法解析
所属栏目:[语言] 日期:2022-07-16 热度:99
前面章节中,已经给大家系统地介绍了几个查找函数,如 find()、find_if()、search() 等。值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高。例如,当指定区域内的数据处于有序状态时,如果想查找某个[详细]
-
C++ STL all_of any_of及none_of算法细说
所属栏目:[语言] 日期:2022-07-16 热度:130
algorithm 头文件中定义了 3 种算法,用来检查在算法应用到序列中的元素上时,什么时候使谓词返回 true。这些算法的前两个参数是定义谓词应用范围的输入迭代器;第三个参数指定了谓词。检查元素是否能让谓词返回 true 似乎很简单,但它却是十分有用的。 例[详细]
-
C++ equal STL equal 对比算法详解
所属栏目:[语言] 日期:2022-07-16 热度:98
可以用和比较字符串类似的方式来比较序列。如果两个序列的长度相同,并且对应元素都相等,equal() 算法会返回 true。有 4 个版本的 equal() 算法,其中两个用 == 运算符来比较元素,另外两个用我们提供的作为参数的函数对象来比较元素,所有指定序列的迭代[详细]
-
C++ STL lexicographical_compare字符串排序算法说明
所属栏目:[语言] 日期:2022-07-16 热度:174
两个字符串的字母排序是通过从第一个字符开始比较对应字符得到的。第一对不同的对应字符决定了哪个字符串排在首位。字符串的顺序就是不同字符的顺序。如果字符串的长度相同,而且所有的字符都相等,那么这些字符串就相等。如果字符串的长度不同,短字符串[详细]
-
C++ move STL move 函数运用详解
所属栏目:[语言] 日期:2022-07-16 热度:138
move() 算法会将它的前两个输入迭代器参数指定的序列移到第三个参数定义的目的序列的开始位置,第三个参数必须是输出迭代器。这个算法返回的迭代器指向最后一个被移动到目的序列的元素的下一个位置。 这是一个移动操作,因此无法保证在进行这个操作之后,[详细]
-
C++ swap_ranges STL swap_ranges 函数利用详解
所属栏目:[语言] 日期:2022-07-16 热度:55
可以用 swap_ranges() 算法来交换两个序列。这个算法需要 3 个正向迭代器作为参数。前两个参数分别是第一个序列的开始和结束迭代器,第三个参数是第二个序列的开始迭代器。显然,这两个序列的长度必须相同。这个算法会返回一个迭代器,它指向第二个序列的[详细]
-
C++ fill和fill_n函数用法解说
所属栏目:[语言] 日期:2022-07-16 热度:160
fill() 和 fill_n() 算法提供了一种为元素序列填入给定值的简单方式,fill() 会填充整个序列; fill_n() 则以给定的迭代器为起始位置,为指定个数的元素设置值。下面展示了 fill() 的用法: std::vectorstring data {12}; // Container has 12 elements st[详细]
-
C++ STL关联式容器是哪些
所属栏目:[语言] 日期:2022-07-16 热度:50
在《C++ STL容器》一节中讲到,C++ 容器大致分为 2 类,即序列式容器和关联式容器。其中,序列式容器(包括 array、vector、list、deque 和 forward_list)已经在前面章节中做了详细的介绍,从本节开始,将逐个对 C++ STL 标准库中的所有关联式容器做详细[详细]
-
C++ STL pair用法说明
所属栏目:[语言] 日期:2022-07-16 热度:163
我们知道,关联式容器存储的是键值对形式的数据,比如: C语言教程, http://c.biancheng.net/c/ Python教程, http://c.biancheng.net/python/ Java教程, http://c.biancheng.net/java/ 如上所示,每行都表示一个键值对,其中第一个元素作为键(key),第二[详细]
-
C++ STL map容器解说
所属栏目:[语言] 日期:2022-07-16 热度:61
作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。 通常情况下,map 容器中存储的各个键值[详细]
-
C++ STL map容器迭代器用处详解
所属栏目:[语言] 日期:2022-07-16 热度:179
无论是前面学习的序列式容器,还是关联式容器,要想实现遍历操作,就必须要用到该类型容器的迭代器。当然,map 容器也不例外。 C++ STL 标准库为 map 容器配备的是双向迭代器(bidirectional iterator)。这意味着,map 容器迭代器只能进行 ++p、p++、--p[详细]
-
C++ STL map获取键对应值的几种方法 超具体
所属栏目:[语言] 日期:2022-07-16 热度:134
我们知道,map 容器中存储的都是 pair 类型的键值对,但几乎在所有使用 map 容器的场景中,经常要做的不是找到指定的 pair 对象(键值对),而是从该容器中找到某个键对应的值。 注意,使用 map 容器存储的各个键值对,其键的值都是唯一的,因此指定键对应[详细]
-
C++ STL map insert 插入数据的4种办法
所属栏目:[语言] 日期:2022-07-16 热度:180
前面讲过,C++ STL map 类模板中对[ ]运算符进行了重载,即根据使用场景的不同,借助[ ]运算符可以实现不同的操作。举个例子: #include iostream #include map //map #include string //string using namespace std; int main() { std::mapstring, string[详细]
-
C++ STL map emplace 和emplace_hint方式详解
所属栏目:[语言] 日期:2022-07-15 热度:180
学习 map insert() 方法时提到,C++ STL map 类模板中还提供了 emplace() 和 emplace_hint() 成员函数,也可以实现向 map 容器中插入新的键值对。本节就来讲解这 2 个成员方法的用法。 值得一提的是,实现相同的插入操作,无论是用 emplace() 还是 emplace[详细]
-
C++ STL multimap容器用法完全策略
所属栏目:[语言] 日期:2022-07-15 热度:59
在掌握 C++ STL map 容器的基础上,本节再讲一个和 map 相似的关联式容器,即 multimap 容器。 所谓相似,指的是 multimap 容器具有和 map 相同的特性,即 multimap 容器也用于存储 pairconst K, T 类型的键值对(其中 K 表示键的类型,T 表示值的类型),[详细]
-
C++ STL set容器完全攻略 很详细
所属栏目:[语言] 日期:2022-07-15 热度:119
前面章节讲解了 map 容器和 multimap 容器的用法,类似地,C++ STL 标准库中还提供有 set 和 multiset 这 2 个容器,它们也属于关联式容器。不过,本节先讲解 set 容器,后续章节再讲解 multiset 容器。 和 map、multimap 容器不同,使用 set 容器存储的各[详细]
-
C++ STL set容器迭代器用法解析
所属栏目:[语言] 日期:2022-07-15 热度:110
和 map 容器不同,C++ STL 中的 set 容器类模板中未提供 at() 成员函数,也未对 [] 运算符进行重载。因此,要想访问 set 容器中存储的元素,只能借助 set 容器的迭代器。 值得一提的是,C++ STL 标准库为 set 容器配置的迭代器类型为双向迭代器。这意味着[详细]
-
C++11支撑函数模板的默认模板参数
所属栏目:[语言] 日期:2022-07-15 热度:153
在 C++98/03 标准中,类模板可以有默认的模板参数,如下: template typename T, typename U = int, U N = 0 struct Foo { // ... }; 但是却不支持函数的默认模板参数: template typename T = int // error in C++98/03: default template arguments void[详细]
-
C++11 tuple元组细说
所属栏目:[语言] 日期:2022-07-15 热度:55
C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以[详细]