C++
1100022702
这个作者很懒,什么都没留下…
展开
-
rotate
#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<string> words{ "five","six","seven","eight","nine","ten","one","two","three","four", }; auto iter.原创 2021-08-04 19:27:22 · 130 阅读 · 0 评论 -
next_permutation和prev_permutation
next_permutation用于生成当前序列的下一个排列组合,如果当前序列是最大值则返回false;prev_permutation用于生成当前序列的上一个排列组合,如果当前序列是最小值则返回false。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector原创 2021-08-04 18:38:15 · 129 阅读 · 0 评论 -
equal
equal用于比较两个序列是否相等,也可以自定义比较条件;如果两个序列的长度不相等则返回false;如果B序列的长度比A序列大,可以不用指定B序列的结束位置;如果A序列的长度比B序列大,则需要指定A序列的结束位置,使AB序列的长度相等。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool原创 2021-08-04 14:59:34 · 170 阅读 · 0 评论 -
all_of、any_of、none_of
all_of用于判断指定范围内的元素是否都满足条件;any_of用于判断指定范围内的元素是否至少有一个满足条件;none_of用于判断指定范围内的元素是否都不满足条件。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<int> v{ 1,9原创 2021-08-04 14:15:00 · 388 阅读 · 0 评论 -
binary_search
binary_search用于在指定范围内查找某个元素是否存在;在指定的范围中,被查找元素的所有左边元素必须满足指定条件,被查找元素的所有右边元素必须不满足指定条件。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool comp(int i, int j) { return i < j; }原创 2021-08-04 13:51:18 · 95 阅读 · 0 评论 -
equal_range
equal_range用于在指定范围内查找所有符合条件的元素;默认条件下,被查找元素的所有左边元素必须小于被查找元素,被查找元素的所有右边元素必须大于被查找元素。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool comp(int i, int j) { return i < j; }b原创 2021-08-04 12:00:31 · 106 阅读 · 0 评论 -
partition_point
partition_point用于在已经分好组的序列中,查找分组的分界点,返回不满足条件的分组中的第一个元素的位置。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool comp(int i) { return i < 5; }int main(){ vector<int&g原创 2021-08-03 17:53:59 · 179 阅读 · 0 评论 -
partition_copy
partition_copy可以根据指定条件,把容器中的元素分成两组,并把分组拷贝到新的容器中;该函数返回一个 pair 类型值,其中包含 2 个迭代器,第一个迭代器指向第一个分组的最后一个元素在新容器中的位置,第二个迭代器指向第二个分组的最后一个元素在新容器中的位置。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespac原创 2021-08-03 17:32:48 · 118 阅读 · 0 评论 -
partition
partition可以根据指定条件,把容器中的元素分成两组,返回第二组中第一个元素在已完成分组中的位置;patition是不稳定分组,stable_partition是稳定分组。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool comp(int i) { return i >= 5; }原创 2021-08-03 17:04:57 · 75 阅读 · 0 评论 -
search_n
search用于在序列A中查找满足条件的序列B,返回序列B在序列A中第一次出现的位置;如果序列B的元素都相等,那么可以使用search_n代替search实现查找;#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<int> v{ 1,2,4,5原创 2021-08-03 16:42:36 · 76 阅读 · 0 评论 -
search
search用于在序列A中查找满足条件的序列B,返回序列B在序列A中第一次出现的位置。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool searchComp(int i, int j) { return i == j; }bool searchComp2(int i, int j) { retu原创 2021-08-03 16:31:19 · 103 阅读 · 0 评论 -
adjacent_find
adjacent_find用于在指定范围内查找1个连续出现2次的元素。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<int> v{ 1,2,2,4,5,2,3,4,7,8,9,1,7,7,3,4 }; auto it = adjace原创 2021-08-03 16:24:44 · 94 阅读 · 0 评论 -
find_first_of
find_first_of用于在序列A中查找某个元素,该元素至少和序列B中的一个元素存在满足指定条件的情况。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool findComp(int i, int j) { return i == j; }bool findComp2(int i, int j.原创 2021-08-03 15:20:36 · 118 阅读 · 0 评论 -
find_end
find_end用于在序列A中查找满足条件的序列B,返回序列B在序列A中最后出现的位置。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool findComp(int i, int j) { return i > j; }int main(){ vector<int>原创 2021-08-03 14:45:25 · 69 阅读 · 0 评论 -
find_if和find_if_not
1、find_if在查找条件为true时,返回元素的位置;2、find_if_not在查找条件为false时,返回元素的位置;#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;bool findComp(int i) { return i > 8; }int main(){ vect原创 2021-08-03 11:57:10 · 117 阅读 · 0 评论 -
merge和inplace_merge
1、merge用于将2个有序序列合并成1个有序序列,并存储到新的容器中;2、如果2个有序序列存储在同一个容器中,可以用inplace_merge进行合并,并替换原有的容器;3、被合并的序列必须同为升序或降序,如果被合并序列为升序,则比较函数返回第一个参数大于第二个参数,如果被合并序列为降序,则比较函数返回第一个参数小于第二个参数,;#include <algorithm>#include <iostream>#include <string>#incl原创 2021-08-03 11:29:17 · 337 阅读 · 0 评论 -
nth_element
将第n大元素放在序列第n个位置,且该位置的左边元素都小于该元素,该位置的右边元素都不小于该元素。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;int main(){ vector<int> v{ 9,2,7,3,1,6,8,4,5,2,4 }; nth_element(v.原创 2021-08-02 20:00:39 · 68 阅读 · 0 评论 -
sort和stable_sort
sort是不稳定排序,即经过排序之后,相同值的元素在序列中的相对位置可能发生改变。stable_sort是稳定排序,即经过排序之后,相同值的元素在序列中的相对位置不会发生改变。两者默认都是升序排序,可以通过自定义比较函数,也可以重载元素的<运算符,达到升降排序的目的。#include <algorithm>#include <iostream>#include <string>#include <vector>using na..原创 2021-08-02 19:23:02 · 923 阅读 · 0 评论 -
lower_bound和upper_bound
1、lower_bound查找非递减序列中第一个大于等于某个元素的位置;2、upper_bound返回非递减序列中第一个大于某个元素的位置;如果查找的元素不是基本数据类型,可以通过自定义函数进行查找,注意比较函数都是返回第一个参数小于第二个参数。#include <algorithm>#include <iostream>#include <string>#include <vector>using namespace std;原创 2021-08-02 16:56:20 · 87 阅读 · 0 评论 -
拷贝构造函数的用处
1. 用已知对象的值来创建一个同类的新对象。2. 在使用对象作为函数的参数的情况下,当实参值传递给形参时,系统自动调用拷贝构造函数。3. 当对象作为函数的返回值时,系统自动调用拷贝构造用返回值创建一个临时对象,然后再将这个临时对象赋值给调用函数中的某个接收函数返回值的对象。在第3点中,当返回值是用来创建一个新对象时,系统不会创建一个临时对象,若是用来赋值给某个已创建的对象时,系统会创建原创 2012-08-22 11:54:19 · 858 阅读 · 0 评论 -
C++ primer第五版_表达式
第3、4章0、对string对象中每个字符的遍历,可以使用范围for语句,for(auto c : str)。1、理解数组声明的含义,最好从数组的名字开始按照由内向外的顺序阅读。2、函数的调用顺序没有明确规定。3、有4种运算符明确规定了运算对象的求值顺序:&&运算符、||运算符、条件(?:)运算符、逗号运算符。4、const_cast只能改变运算对象的底层const。const原创 2014-08-16 18:54:46 · 367 阅读 · 0 评论 -
c++ 之类的前置声明
http://software.intel.com/zh-cn/blogs/2010/05/04/c-2/原创 2013-12-25 21:22:39 · 474 阅读 · 0 评论 -
C/C++转载
C/C++堆栈指引http://www.cnblogs.com/Binhua-Liu/archive/2010/08/24/1803095.html转载 2015-02-09 17:53:16 · 418 阅读 · 0 评论 -
String类的实现
#include class String{public: String(): data_(new char[1]) { *data_ = '\0'; } String(const char *str): data_(new char[strlen(str) + 1]) { strcpy(data_, str); } String(const String &原创 2015-03-03 22:38:02 · 302 阅读 · 0 评论 -
单例模式
懒汉模式:方案一:局部静态实例class Singleton{public: static Singleton &instance() { static Singleton instance; return instance; }private: Singleton() {} ~Singleton() {} Singleton(const Singleton原创 2015-03-25 16:54:11 · 372 阅读 · 0 评论 -
纯虚函数
1.当在基类中不能为虚函数给出一个有意义的实现时,可以将其声明为纯虚函数,其实现留待派生类完成。例如,把多边形作为一个基类可以派生出三角形,正方形等子类,但多边形本身生成对象就不大合理了,这时就可以把多边形的成员函数定义为纯虚函数。2.含有纯虚函数的类为抽象类,抽象类所包含的函数仅仅是声明,都是没有函数定义的,所以抽象类不能创建对象。原创 2014-08-24 22:22:55 · 562 阅读 · 0 评论 -
类中常量、static变量、static常量的初始化
VC6中#include using namespace std;class A{public: A():a(0){} const int a; static int sa; static const int sca;};int A::sa=5;const int A::sca=10;void main(){ A *p=new A; couta<<endl原创 2012-08-23 10:38:11 · 1136 阅读 · 0 评论 -
友元函数
友元函数不是成员函数,但可以访问类的私有成员,它的作用在于提高程序的运行效率,但却破坏了类的封装性和隐蔽性。#include #include using namespace std;class Point{public: Point(float i=0.0f, float j=0.0f) { x=i; y=j; } friend float Distance(Po原创 2012-08-10 12:10:38 · 2111 阅读 · 0 评论 -
基类指针与子类指针的比较
#include using namespace std;class A{ int a;};class B{ int b;};class C:public A, public B{ int c;};int main(){ C *pC=new C; A *pA=pC; B *pB=pC; cout<<pA<<endl; //pA指向对象C中的子类A部原创 2012-08-22 18:55:38 · 833 阅读 · 0 评论 -
虚继承
class A{public: virtual ~A(){cout<<"~A"<<endl;} void funA(){cout<<"funA"<<endl;}};class B:virtual public A{public: ~B(){cout<<"~B"<<endl;} void funB(){cout<<"funB"<<endl;}};class C:virtu原创 2014-08-24 17:40:17 · 377 阅读 · 0 评论 -
extern “C” 的作用
extern “C” 的作用主要是为了原创 2014-06-28 11:27:05 · 452 阅读 · 0 评论 -
组合
如果鸟是可以飞的,那么鸵鸟是鸟么?鸵鸟如何继承鸟类?#includeusing namespace std;class bird{public: void eat(){cout<<"bird can eat."<<endl;} void sleep(){cout<<"bird can sleep."<<endl;} void fly(){cout<<"bird can fly."原创 2012-08-06 17:32:01 · 274 阅读 · 0 评论 -
C++ primer第五版_定义行为像值的类_行为像指针的类
//行为像值的类class HasPtr{public: HasPtr(const std::string &s = std::string()):ps(new std::string(s)), i(0) {} HasPtr(const HasPtr &p):ps(new std::string(*p.ps)), i(p.i) {} HasPtr& operator=(const Ha原创 2014-08-17 17:53:37 · 1221 阅读 · 0 评论 -
实现类的成员函数为回调函数
#include typedef int (*FuncPtr)(void); //声明回调函数类型class A{public: static int callBackFunc(void) //回调函数必需声明为static { return i_; //只能调用静态成员 }private: static int i_;};int A::i_ = 20;vo原创 2015-03-04 00:59:31 · 259 阅读 · 0 评论 -
使用IO库读取文件
假设有文件 player.txtname age numbermaldini 46 4totti 39 10inzaghi 41 9piero 40 7vieri 41 21display.cpp#include #include #include #include #includ原创 2014-12-23 17:44:14 · 316 阅读 · 0 评论 -
Effective C++ 第三版 摘要
1、让自己习惯C++01:视C++为一个语言联邦1)多重泛型编程语言:支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式。2)主要的次语言:以C为基础、面向对象c++、泛型编程、STL。3)C++高效编程守则视状况而变化,取决于你使用C++的哪一个部分。02:尽量以const,enum,enum,inline替换#define1)以常量替代宏,编译器可以看到原创 2014-10-05 19:03:33 · 474 阅读 · 0 评论 -
C++ primer第五版_变量和基本类型
0、赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。1、赋给符号类型一个超出它表示范围的值时,结果是初始值的二进制保留符号类型的有效位后求原码的数。2、初始化是创建变量时赋予一个初始值,赋值是把对象的当前值擦除,而以一个新值来替代。3、int a{12};为列表初始化,不允许丢失信息的列表初始化 int a{12.5};4、定义于任何函数体原创 2014-08-16 18:30:08 · 466 阅读 · 0 评论 -
C++ primer第五版_IO库
第8章0、导致缓冲刷新的原因有:缓冲区满、显示刷新(endl;flush;ends)、操作符(unitbuf)、关联输入和输出流。1、设置每次输出后都刷新缓冲区:cout2、如果程序崩溃,输出缓冲区不会被刷新。3、从输入流读数据,往输出流写数据。4、iostream处理控制台IO,fstream处理命名文件IO,stringstream完成内存string的IO。原创 2014-08-16 19:03:49 · 399 阅读 · 0 评论 -
C++ primer第五版_重载运算
0、定义重载的运算符是,必须首先决定是将其声明为类的成员函数还是非成员函数1、算术、相等性、关系、位运算、输入输出等的重载应该定义成非成员函数2、重载输出运算符的第一个形参是一个非常量(向流写入内容会改变其状态)ostream对象的引用(无法复制ostream对象),第二个形参是该类的常量(避免修改)引用(避免复制),返回ostream形参(与其它输出运算符保持一致)3、重载输入运算符原创 2014-08-17 17:12:34 · 436 阅读 · 0 评论 -
C++ primer第五版_类
0、常量对象,以及常量对象的引用或指针只能调用常量成员函数。1、如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。2、IO类属于不能被拷贝的类型,读取或写入的操作会改变流的内容,所以IO类以普通引用做参数。3、拷贝构造函数的调用:初始化变量、以值的方式传参、返回一个对象。4、使用struct关键字,则定义在第一个访问说明符之前的成员是public的;使用c原创 2014-08-16 18:57:02 · 637 阅读 · 0 评论