![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
泛型编程
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
c++中函数对象的理解以及bind1st和bind2nd的使用
本文主要介绍了c++中函数对象的基本概念,以及stl中自带的常用的函数对象(包括一元函数对象和二元的函数对象)。然后以binder1st和binder2nd为例以代码为示例,简单的使用方法。然后为了加深对函数对象的理解,自己根据类模板和函数模板编写了一个test_binder1st类模板和test_bind1st函数模板,用以实现stl中binder1st和bind1st的功能。目录函数对...原创 2020-02-16 14:16:01 · 1046 阅读 · 1 评论 -
c++中智能指针auto_ptr的简介以及使用方法
auto_ptr保证在异常被抛出时,分配的对象能够自动消费,内存能够自动释放。使用auto_ptr可以代替指针进行操作,并且不关心内存的释放。解决内存溢出的问题。下面的程序包括auto_ptr一个简单的示例一级自定义的一个类模板smart_pointer,以便链接智能指针的底层实现的原理:测试源代码#include "stdafx.h"#include <iostream&...原创 2020-02-15 23:45:38 · 402 阅读 · 0 评论 -
c++中STLvector的erase方法和algorithm中的remove使用上的一些区别
有下面的示例程序可以看出,电泳erase删除一个元素后,相对应的元素被删除,并且容器中的元素也随之减少了一个,迭代器不能访问。调用algorithm中的remove删除后相对应的元素被删除,但是容器中的元素个数没有变少,并且删除后容器后面的元素往前移动一个位置,并且最后的元素的值,是用之前最后一个元素的值填充。并且remove返回的迭代器位置是最后一个元素的位置。algorithm中的re...原创 2020-02-14 17:55:10 · 779 阅读 · 0 评论 -
C++里面的算法reverse转置的使用以及STL中deque容器的转置使用示例
reverse是全局函数模板,不是一个类中的成员函数。reverse的参数:一个是指向要操作的范围头指针,第二个参数是指向尾的指针。以下的示例程序分别使用reverse函数对数组data和容器vector<string> v1做了转置,其中需要注意的是reverse中的参数的不同。STL中的deque中自带了转置的迭代器:deque<int>::iterator...原创 2020-02-14 16:45:43 · 807 阅读 · 0 评论 -
c++ STL中的map的简单介绍和示例
map的介绍标准的STL关联程序(set,map,multset,multmap)的内部结构是平衡二叉树。平衡二叉树分为:avl-tree,rb-tree,aa-tree。STL的底层机制都是以RB-tree(红黑树)实现的。RB-tree是一个不被外界使用的容器。所以map的底层是以红黑树实现的,注意和hashmap的区分。map底层是红黑树,hashmap底层是hash表。之前在高...原创 2020-02-13 22:39:22 · 219 阅读 · 0 评论 -
C++中STL的set的简单示例
使用如下代码演示了,一个set的string类型的容器中元素的插入,删除和遍历操作。#include "stdafx.h"#include <iostream>#include <set>#include <string>using namespace std;int main(int argc, char *argv[]){ set&...原创 2020-02-13 17:19:03 · 188 阅读 · 0 评论 -
c++中使用stl中的vector 将一个文件中的整形数据排序并将排序后的数据存入到另一个文件中(bubble sort)
将数据读出到vector中的一个容器data中: vector<int> data; ifstream in_data("D:\\data.txt");//open the target file if (!in_data){ cout << "input file error" << endl; return 1; } int tem...原创 2020-02-13 11:42:09 · 874 阅读 · 0 评论 -
STL中vector和list的概念和使用方法上的差异
vector介绍vector和数组类似,可以支持使用[]的方法随机存取,拥有一段连续的内存空间,并且内存的起始地址不变。就像数组一样由于他的内存空间是连续的,所以在插入删除的时候,会造成内存的拷贝,当该内存空间不够时,需要重新申请一块足够大的内存,并将数据拷贝到新的内存空间中,然后再释放之前较小额那块内存。list介绍list是由数据结构中双向链表的方式实现的,因此内存空间不连续。所...原创 2020-02-12 16:59:28 · 411 阅读 · 0 评论 -
泛型编程--c++中使用模板对任何类型的数组排序
通过使用c++中的泛型编程机制模板,实现可以对任意类型的数组里面的数据进行排序。包括我们自己定义的一个类模板的类型。首先我们对普通的类型int和float类型的数组进行排序,排序的模板:template <typename T>class sort_demo{public: static void sort(T *data, int len, bool (*compar...原创 2020-02-10 18:18:29 · 2562 阅读 · 0 评论 -
泛型编程--c++中的模板特化
模板的特化:函数模板的特化和类模板的特化当函数模板或者类模板需要对一些特殊的类型做特殊处理的时候,需要用到c++中模板的特化机制。比如如下代码,模板ret_max中两个参数t1和t2,可以是多个类型,int,double,。如果需要对特殊的类型如下面代码的char *类型,做特殊的处理,就是里面实现的功能不一样。就可以使用如下的方法。#if 1template <class...原创 2020-02-09 23:02:16 · 190 阅读 · 0 评论 -
泛型编程-c++中的类模板的介绍
函数模板和类模板的介绍函数模板:通过用户提供的具体的参数,C++编译器能够将函数模板实例化,根据同一个模板创建出不同的具体的函数。这些函数之间的不同在于函数内部的一些数据类型不同函数模板的定义格式:template <TYPE_LIST, ARG_LIST> function_definition如://template <class T>templat...原创 2020-02-08 10:22:49 · 185 阅读 · 0 评论 -
泛型编程的简介
泛型编程是一种新的编程思想,基于模板技术有效的将算法和数据结构分离。泛型编程是指编写完全一般化并恶意重复使用的算法。就是指具有在多种数据类型上皆可操作,在c++上就是使用模板实现。例如:我们要实现各个数据类型的最大值。需要写如下的函数重载。int max(int a, int b){ return (a > b) ? a : b;}float max(float a, f...原创 2020-02-07 11:07:36 · 1463 阅读 · 0 评论