C++
杨博东的博客
阿里云数据库-NoSQL组,开源贡献者,Valkey Contributor,Valkey-Java Client Maintainer。
展开
-
C++ IO基础
一:c++I/O处理,按照数据输入输出的过程,形象的将其看做流。数据在流中进行传播。 所有的流有两个基类:ios和streambuf类 streambuf:提供对缓冲区的基本操作,设置缓冲区等 ios:记录流的状态,支持对streambuf的输入/输出的格式化/非格式化操作。istream和ostream的操作:istream1:>> : 返回的是引用,所以可以连续使用。int a,b,原创 2016-01-22 11:09:57 · 760 阅读 · 0 评论 -
#ifndef #define #endif #ifdef 避免重复引用
一:在什么阶段处理 ?预处理 预处理 预处理首先注意这四个头文件保护符是在预处理阶段由系统默认的预处理器(Linux操作系统上默认是cpp)来处理的。它们的含义如下:#define XXX // 将XXX声明为一个预处理变量 #ifndef XXX // 当且仅当XXX没有被定义为"真" #ifdef XXX // 当且仅当XXX被定义时为"真" #endif原创 2016-12-07 00:36:21 · 2931 阅读 · 1 评论 -
c++ template 实现一个简单的"栈"
一: 实现一个简单的swap原来我们写swap一定会这样写:对于int类型的: swap(const int &x,const int &y) { int temp; temp = x; x = y; y = temp; } 对于double类型的: swap(const double &x,const double &y) { double temp;原创 2016-06-30 23:38:42 · 914 阅读 · 0 评论 -
c++ 小知识点
记录自己遇到的c++小知识点,不断更新中……2016.03.131:数组间拷贝只能使用for循环一个一个拷贝,但是vector之间可以直接用一个vector初始化另一个vector。int main() { // array int arr[10]; for (int i = 0; i < 10; ++i) arr[i] = i; int arr2[10];原创 2016-03-13 15:33:32 · 662 阅读 · 0 评论 -
c++ 算法 next_permutation
遇到这个算法是在大牛写的10行的8皇后问题中,下面首先给出这个10行就解决了8皇后的NB代码,我目前还是没有看懂对于皇后不在同一列的判断,因为他巧妙的用了移位操作。 #include<iostream> #include<algorithm> #include<bitset> #include<numeric> #include<utility> int main() { int i =原创 2016-02-26 16:30:00 · 1176 阅读 · 0 评论 -
c++ 关联容器
c++ 第十一章:关联容器 2:在c++中,顺序容器和关联容器之间本质的区别在于:关键字,关联容器中的元素是按照关键字来保存的,顺序容器中的元素是按照它们在容器中的位置来保存的。3:我们可以按照关键字是否有序或者是否允许重复关键字来区分关联容器。 关键字有序:map,set,multimap,multiset,它们按照有序存储的。 关键字无序:unordered_map,unordered_set原创 2016-02-25 19:10:08 · 866 阅读 · 0 评论 -
c++ 泛型算法
1:c++的算法库中有超过100个算法,这些算法均不会直接操作底层的元素,他们是通过操作迭代器规定的范围来实现的。3:只读算法,操作两个序列的算法,写容器的算法,插入迭代器,拷贝算法(1):只读算法如”std::find”,”std::count”之类的算法,不会改变元素的值。对于只读取而不改变元素的算法,通常最好使用cbegin()和cend(),但是如果计划了使用算法返回的迭代器来改变元素的值,原创 2016-02-25 19:04:40 · 1014 阅读 · 0 评论 -
c++ 顺序容器
2:c++标准库中的顺序容器,所有顺序容器都提供了快速顺序访问元素的能力。 但是在两方面还是有性能上的折中,一是向容器中添加或从容器中删除元素的代价,二是非顺序访问容器中元素的代价。 类型 含义 缺点 vector 可变大小数组。支持快速随机访问 在尾部之外的位置插入或者删除可能比较慢 deque 双端队列支持快速访问 list 双向链表,只支持双向原创 2016-02-20 11:36:44 · 1262 阅读 · 2 评论 -
c++ IO库
1:为了支持使用宽字符的语言,标准库定义了一组类型和对象来操作wchar_t类型的数据。宽字符版本的类型和函数的名字以w开头。宽字符版本和普通的char版本定义在同一个头文件中,例如头文件fstream定义了ifstream和wifstream。2:标准库能使我们忽略不同类型流之间的差异是通过继承机制实现的。3:IO对象无拷贝或者赋值。所以我们不能将IO对象作为函数形参或者返回值,一般用引用的形式。原创 2016-02-20 11:30:43 · 1027 阅读 · 0 评论 -
c++ 动态内存
c++ 第十二章:动态内存 1:对于一个c++程序,我们使用到的内存有栈内存和静态内存以及动态内存,静态内存用来保存局部static,全局变量等对象,栈内存用来保存在函数中申请的非static对象,它们都是由编译器创建和销毁的。此外,我们在程序运行过程中,如果需要分配的动态内存,即c语言中的malloc,是从堆上分配的。但是释放也必须要我们手动释放,由于正确管理动态内存非常的棘手,c++为我们提供原创 2016-03-01 21:50:20 · 840 阅读 · 0 评论 -
c++ 类
1:成员函数的声明必须在类的内部,但是它的定义既可以在类的内部,也可以在类的外部。 2:this成员函数通过一个名为this的指针的额外的隐式的参数来访问调用它的那个对象。例如调用一个成员函数的时候,用请求该函数的对象地址初始化this,例如,如果调用f.func(),编译器负责将f的地址传给func的隐参数。func本来没有参数,但是现在就相当于func(&f)。 3:常量成员函数: std原创 2016-01-28 02:43:15 · 577 阅读 · 0 评论 -
C++11 多线程同步 互斥锁 条件变量
在多线程程序中,线程同步(多个线程访问一个资源保证顺序)是一个非常重要的问题,Linux下常见的线程同步的方法有下面几种: 互斥锁 条件变量 信号量 这篇博客只介绍互斥量和条件变量的使用。互斥锁和条件变量通常情况下,互斥锁和条件变量是配合使用的,互斥锁用于短期锁定,主要保证线程对临界区的进入;条件变量用于线程长期等待,在wait的时候会释放锁。操作的API如下所示(介绍最常用的): std::m原创 2017-03-04 21:21:26 · 8876 阅读 · 6 评论