栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++的基础知识点(未整理版)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++的基础知识点(未整理版)

sizeof( ) 显示内存空间

float 4 字节

double 8 字节

char 1 字节

指针 4 字节( 32位操作系统 )

8 字节( 64位操作系统 )

节省空间

转义字符

n 换行

\ 反斜杠字符

t 占八个位置

小数之间不可以做取模运算

++i与i++

前置递增(++i)先加一 然后运算

后置递增(i++)先运算 然后加一

逻辑运算符

!非 && 与 || 或

三目运算符

a ? b : c 如果 A 则 B 否则 C;

随机数

rand()%100 //生成0 ~ 99 的数

随机种子 ctime 头文件 + srand((unsigned int)time(NULL))

goto 语句 跳转语句 ( 不常用 )

goto FLAG ;做标记 FLAG;

冒泡排序 ( -1 可能是为了节省空间)

for ( int i=0;i

for(int j=0;j

二维数组名

可以查找二维数组空间

可以获取首地址

空指针不可访问

const修饰指针

指针的指向可以改,值不可以改( const int * p )常量指针

指针的指向不可以改,值可以改( int * const p ) 指针常量

遍历就是逐个访问 容器中的东西

结构体中const 的使用

可以防止误操作

C++ 的四大分区

exe未执行前

1、代码区

存放二进制代码 ( CPU的指令 )

2、全局区

全局变量、静态变量( static 关键字)、常量

exe执行后

3、栈区

编译器保留一次

4、堆区

由程序员操作

用new开辟数据

delete释放(释放数组 delete [ ] )

引用 ( & + A )

需要初始化

在初始化后,不可以改变

引用作为返回值

1、不要返回局部变量的引用

2、函数的调用可以作为左值

& + A 等效于 int *const A

常量引用

用来修饰形参,防止误操作

函数的重载

1、函数名相同

2、同一作用域

3、类型不同,参数不同

类和对象

权限

public 都可以访问

private 类外不可以

protected 类外不可以

访问私有权限

可以通过 public 函数 访问

构造函数分类即调用

无参构造

有参构造

拷贝构造函数 ( const + 类名 + & + [ ] )

1、括号法

2、显示法

3、隐式转换法

拷贝构造函数的调用

值的方式传数据

值的方式返回数据

构造函数的调用规则

默认构造

析构函数

拷贝构造

深拷贝和浅拷贝

浅拷贝:简单的赋值操作 ( 堆区重复释放 )

深拷贝:在堆区开辟空间

初始化列表

类名 ():属性名( 数值 )~~~~

静态成员函数只能访问静态变量

this 指针

空指针调用成员函数 ( 不可以访问属性 )

const修饰成员函数

函数 ()+const 属性不可以修改

mutable + 属性可以

const + 对象·( 不可以修改 )

常对象 只能调用 常函数

友元函数

friend+函数

左移运算符

ostream & operator<< ( ostream &cout,类名 & p){

return cout;

}

文件操作

ofstream:写操作

ifstream: 读操作

fstream: 读写操作

文本文件

写文件:

1、头文件 #include

2、创建流对象 ofstream ofs;

3、打开文件 ofs.open ( " 文件路径 ",打开方式)

4、写数据 ofs<<"写入数据";

5、关闭文件 ofs.close();

文件打开方式

1、iOS::in 为读文件而打开文件

2、iOS::out 为写文件而打开文件

3、iOS::ate 初始位置:文件尾

4、iOS::app 追加方式写文件

5、iOS::trunc 如果文件存在先删除,在创建

6、iOS::binary 二进制方式

读文件

1、头文件 #include

2、创建流对象 ifstream ifs;

3、打开文件 ifs.open ( " 文件路径 ",打开方式)

4、读数据

四种方法

1、while( )

5、关闭文件 ifs.close();

二进制文件

打开方式指定为 iOS::binary

写文件

1、头文件 #include

2、创建流对象 ofstream ofs(“文件路径”,iOS::out|iOS::binary);

3、打开文件 ofs.open ( " 文件路径 ",iOS::out|iOS::binary)

4、写文件 ofs.write((const char *)& 对象, sizeof(类名));

5、关闭文件 ofs.close();

读文件

1、头文件 #include

2、创建流对象 ifstream ifs;

3、打开文件 ifs.open ( " 文件路径 ",iOS::out|iOS::binary)

if (!ifs.is_open ()){

cout<<"文件打开失败"<

return;

}

4、读文件

ifs.read((char *)& 对象 ,sizeof(类名));

cout<<。。。

5、关闭文件 ifs.close();

模板函数

template

template --- 声明创建模板

typename --- 数据类型

普通函数优先于模板函数

可以用空模板强制调用

模板函数不是万能的

学模板不是为了写,而是在STL中运行系统提供的模板

STL

vector容器

vector::iterator 拿到迭代器类型

for_each(元素位置,调用函数) 头文件 algorithm

string 类

string和char*的区别

char*是指针

string是包含char*的容器

string s

string s2(s1)

string s3(个数,‘ 字符 ’)

string的赋值操作

str.assign( 个数,字符串 / 字符)

string字符串拼接

+= 符号( 表示拼接 )

str.append ( 字符串 ,截取位置 ,截取长度 ) 表示拼接

string的查找和替换

str.find ( " 字符 / 字符串")

find 从左向右找

rfind 从右向左找

str.replace ( 开始 , 结束 ,”字符串“)

string字符串的比较

str.compare ( str 1) == 0 str = str1

str.compare ( str 1) > 0 str > str1

str.compare ( str 1) < 0 str < str1

string字符存取

通过 at( ) 函数来访问和修改

string插入和删除

str.insert( 插入位置 ,字符串) 插入

str.erase( 开始 ,结束 ) 删除

string子串

str.substr( 开始 ,结束) 提取子串

vector容器 ( 单端数组 )

vector容器的构造函数

vector v ( v1.begin( ) , v1.end( ))

vector v ( 个数 ,数值 ) n个elem 值

vector容器赋值操作

v .assign ( v1.begin( ) , v1.end( ) )

vector容量和大小

v1.empty( )判断容器是否为空

v1.capacity( )容器的容量

v1.size( )容器的大小

v1.resize( )重新指定大小

pop_back( )删除最后一个元素

clear( ) 删除容器中所有元素

font( )访问第一个元素

back ( ) 访问最后一个元素

vector容器 互换容器

v1.swap(v2) 互换容器

vector( v ) . swap ( v ) 收缩内存

vector预留空间

减少 动态扩展次数

v.reserve( 长度 )

deque容器

vector从头部插入

deque相对,对头部的插入删除速度较快

vector访问元素速度比deque快

有中控器维护缓冲区的地址

deque几乎与vector一样

deque没有容量的概念

push-back()尾插

push-front()头插

insert(插入位置,个数 ,字符串)

deque排序 头文件 algorithm

sort( 开始位置 ,结束位置 )

stack容器 ( 栈顶 ,栈底 )

push入栈

pop出栈

栈不允许有遍历

查找 栈顶元素 s.top( )

queue容器 ( 先进先出 )

只有队头和队尾能被外界访问,没有遍历

push入队

pop出队

list容器 ( 可以快速插入和删除 ,遍历速度不快 ,占用空间较大 )

list的优点

动态存储分配,不会造成浪费和溢出

插入删除十分方便

list的缺点

空间和时间较大

插入和删除都不会造成原有迭代器失效但是这在vector是不成立的

list.swap( )交换功能

list.reverse( )反转

list.sort( )排序 从小到大

从大到小 定义bool函数mycompare( int v1 , int v2){

return v1 > v2 ;

}

set容器 ( 插入时自动排序 ) 二叉树实现的

set没有重复元素

multiset可以有重复元素

插入数据只有insert( )

s1.swap( s2 )交换

set的查找和统计

find( )查找

count ( ) 统计 结果是 0 / 1

pair对组的创建

pair< 类名 1 ,类名 2 >

输出用 p.frist p.second

set容器排序

set中包含pair

用仿函数排序的

仿函数

class compareperson

{

bool operator()(const 类名 & ,const 类名 &)

{

return p1.m_age > p2.age;

}

}

map/multimap容器

map中的元素都是pair

第一元素为key值,第二元素为value

map不允许有重复,multimap可以重复

可以根据key值快速找到value值

插入make-pair( , )

m[ n ] = 数值;

函数对象(仿函数)是一个类

仿函数可以作为参数传递

谓词

一元谓词

find-if(v.bigin() , v.end() ,类名())

二元谓词

内建函数对象

头文件 functional

算数仿函数

nagate 一元仿函数 取反仿函数

plus 二元仿函数 加法

minus 减法仿函数

mutiplies 乘法仿函数

divides 除法仿函数

modulus 取模仿函数

关系仿函数

大于 greater greater ()

逻辑仿函数

逻辑非 logical-not

逻辑与 logical-

逻辑或 logical-

transform( v.begin(),v.end(),v2.begin(),logical-not<类名>)

stl常用算法

头文件

algorithm stl中最大的一个,范围涉及到比较、交换、查找、遍历操作、复制、修改

numeric 体积很小,只包含简单的数学运算函数

functional 定义模板类,声明函数对象

遍历算法 for-each(v.begin(),v.end(),函数名 )

搬运到目标容器中 transform( v.begin(),v.end(),v2.begin(),logical-not<类名>) (目标容器要提前开辟空间)

查找算法

1、find(查找区间 ,查找对象 )

自定义类型需要重载==

2、find-if(查找区间,函数名/谓词(返回bool类型的仿函数))

3、相邻重复元素 adjacent-find(查找区间)

4、二分查找 binary-search(查找区间,目标值)

查找的数组必须是【有序】函数

统计元素个数

count(统计区间,目标值)

内置

自定义

count-if(统计区间,仿函数)

排序算法

1、排序( 默认从小到大 ) sort( 排序区间 ,谓词函数 )

2、洗牌打乱顺序 random-shuffle( 打乱区间 )加随机种子

3、将容器合并 merge( v1区间,v2的区间 ,目标容器的起始位置 ) (要分配空间)

两个容器必须是有序的

4、反转 reverse( 反转区间 )

常用的拷贝和替换算法

拷贝 copy(v1的区间 ,目标容器的区间) (要分配空间)

替换 replace(替换区间 ,要替换的值 ,替换的值)

按条件替换 replace-if( 替换区间 ,谓词函数 ,替换的值 )

互换 swap( 容器1 ,容器2)

要求同种容器

常用算术生成算法 numeric(头文件 )

容器元素的累加 accumulate( 算数区间 ,累加起始值)

填充 fill( 填充区间 ,填充数)

常用的集合算法

min( 取较小的值 )

1、交集 set-intersection(v1区间,v2的区间 ,目标容器的起始位置 )(开辟空间)

两个集合必须是有序序列

【返回目标容器最后元素的迭代器地址】

2、并集 set-union(v1区间,v2的区间 ,目标容器的起始位置 )(开辟空间)

【返回目标容器最后元素的迭代器地址】

3、差集 set-different(v1区间,v2的区间 ,目标容器的起始位置 )(开辟空间)

【返回目标容器最后元素的迭代器地址】

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号