c++知识
Posted NodYoung
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++知识相关的知识,希望对你有一定的参考价值。
虚函数
多态性是面向对象语言的基本特征,多态性可以简单地概括为“一个接口,多种方法”。多态性分为静态多态性(编译过程中绑定)和动态多态性。
函数重载(和运算符重载)属于静态多态性,一个函数名(调用接口)对应着几个不同的函数原型(方法)。
虚函数属于动态多态性,对比如下:
通过对象名访问虚函数时,调用哪个类的函数取决于定义对象名的类型(对象类型是基类时,就调用基类的函数;对象类型是子类时,就调用子类的函数)。
使用指针访问非虚函数时,编译器根据指针本身的类型决定要调用哪个函数(而非根据指针指向的对象类型)。
使用指针(或引用)访问虚函数时,编译器根据指针所指对象的类型决定调用哪个函数(而与指针本身的类型无关)。
指针数组与数组指针
指针数组:装着指针的数组。int *a[10]
数组指针:指向数组的指针。int (*p)[10]
不同类型数据的占用空间大小
unsigned long long最大值ULLINT_MAX=0xffffffffffffffff(~18*10^18);
int最大值INT_MAX=0x7fffffff(~2*10^8)
标准模板库STL的常用容器
顺序容器:vector, deque, list
关联容器:set, multiset, map, multimap
写个multiset实现最小堆的例子:
#include <vector>
#include <set>
#include <iostream>
using namespace std;
struct Custom
int a;
char b;
;
int main()
vector<Custom> v Custom 1, 'a' ,Custom 3, 'c' , Custom 4, 'd' ,Custom 2, 'b' ;
auto cmp = [](Custom left, Custom right) return left.a < right.a; ;
multiset<Custom, decltype(cmp)> customSet(cmp);
customSet.insert(v.begin(), v.end());
multiset<Custom, decltype(cmp)>::iterator customIterator;
while(!customSet.empty())
customIterator = customSet.begin();
cout << (*customIterator).a << (*customIterator).b << " ";
customSet.erase(customIterator);
return 0;
容器适配器: stack, queue, priority_queue 。都有3个成员函数:push()、top()、pop()。
排序算法sort
需要随机访问迭代器(vector、deque)的支持。
写个sort和lambda结合排序的例子:
#include <vector>
#include <iostream>
#include<algorithm>
using namespace std;
struct Custom
int a;
char b;
;
int main()
vector<Custom> v Custom 1, 'a' ,Custom 3, 'c' , Custom 4, 'd' ,Custom 2, 'b' ;
auto cmp = [](Custom left, Custom right) return left.a < right.a; ;
sort(v.begin(), v.end(), cmp);
for (Custom& e : v)
cout << e.a << e.b << " ";
return 0;
输出:1a 2b 3c 4d
以上是关于c++知识的主要内容,如果未能解决你的问题,请参考以下文章