常量
#define 常量名 常量值
const 数据类型 常量名 = 常量值
数据类型
整型 short int long long long
浮点型 float double
字符型 表示单个字符的变量 char ch -'a' (int)ch 十进制数字
转义字符 \n换行 \r回车 \\ 表示“\” \t水平制表
字符串型 char str1[] = "hello world" string 变量名 = “字符串值”
布尔类型
数据输入 cin >>变量
数组 int arr[5]; 元素个数sizeof(arr)/sizzeof(arr[0]),(int)arr 数组地址(int) &arr[0]
sizeof可以统计数据类型所占内存大小
函数 int add (int num1,int num2){return num1+num2}
值传递,值传递时,型参发生改变,不影响实参
指针 int a =0; int * p; p=&a; 使用指针: 解引用 *p=1000; 32位占4个字节,64位占8个字节
const int *p =&a;常量指针:指针的指向可以修改,但指针指向的值不可以改
int * const p = &a;指针c常量,指针的指向不可以修改,但指针指向的值可以改
const int * const p =&a;
swap(&a,&b); void swap(int *a,int *b){...}
结构体 struct Student{}; struct Student s1; s1.name = "张三"
结构体数组 struct Student stuArr[3] = {...}
代码区,全局区,栈区,堆区
1.深浅拷贝问题
浅拷贝是编译器自己的方法,==操作
深拷贝是在堆区开辟一块空间进行拷贝
继承 class Java : public BasePage 语法 class 子类 : 继承方式 父类 3.通过子类对象访问父类的同名成员,需加作用域 s.Base::m_A
需继承解决菱形问题
多态:分为静态多态和动态多态 virtual//虚函数 virtual void speak(){...}
虚析构,释放子类对象在堆中开辟的数据释放,解决父类指针释放子类对象时不干净的问题
文件操作:文本文件 二进制文件 ofstream:写操作 ifstream:读操作 fstream:读写操作 ios::in为读打开文件 ios::out ios::ate ios::app 追加写ios::trunc ios::binary 二进制写
函数模板 template<typename T> void swap(T &a,T &b)
vector存放数据
1.vector放置内置数据类型
#include<vector>
#include<algorithm>//标准算法头文件
//放置内置数据类型
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
vector<int> :: iterator itBegin=v.begin();
vector<int> :: iterator itEnd=v.end();
//遍历第一种方式
while(itBegin != itEnd)
{
cout<<*itbegin<<endl;
itBegin++;
}
//第二种遍历方式
for(vector<int>::iterator it=v.begin();it!=v.end();i++)
{
cout<<*itbegin<<endl;
}
void myPrint(int val)
{cout<< val<<endl;
}
//第三种方式
for_each(v.begin(),v.end(),myParint);
2.vector放置自定义数据类型
#include<vector>
class Person
{
public:
Person(string name,int age){
this->m_Name=name;
this->m_Age=age;
}
string m_Name;
int m_Age;
}
void test01()
{
vector<Person> v;
Person p1("aaa",10);
Person p2("aaa",20);
Person p3("aaa",30);
Person p4("aaa",40);
v.push_back(p1);
v.push_back(p2);
v.push_back(p3);
v.push_back(p4);
for(vector<Person>::iterator it=v.begin();it!=v.end();it++){
cout<<"姓名:"<< (*it).m_Name<<endl;
cout<<"姓名:"<< it->m_Name<<endl;
}
}
void test02()
{
vector<Person*> v;
Person p1("aaa",10);
Person p2("aaa",20);
Person p3("aaa",30);
Person p4("aaa",40);
v.push_back(&p1);
v.push_back(&p2);
v.push_back(&p3);
v.push_back(&p4);
for(vector<Person*>::iterator it=v.begin();it!=v.end();it++){
cout<<"姓名:"<< (*it)->m_Name<<endl;
}
}
3.vector容器嵌套容器
void test01()
{
vector<vector<int>> v;
vector<int> v1;
vector<int> v2;
vector<int> v3;
vector<int> v4;
for(int i=0;i<4,i++){
v1.push_back(i+1);
v2.push_back(i+2);
v3.push_back(i+3);
v4.push_back(i+4);
}
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
v.push_back(v4);
for(vector<vector<int>>::iterator it=v.begin();it!=v.end();it++){
for(vector<int>::iterator vit=(*it).begin();vit!=(*it).end();vit++){
cout<<*vit<<" ";
}
cout<<endl;
}
4.vector赋值操作
vector<int>v1;
for(int i=0;i<10;i++){ v1.push_back(i);
}
vector<int>v2;
v2=v1
vector<int>v3;
v3.assign(v1.begin(),v1.end())
v1.empty//是否为空
v1.capacity()//v1的容量
v1.size()//v1的大小
v1.resize(15)//重新指定大小
push_back()//尾部插入
pop_back()//删除最后一个元素
insert(pos,ele)//指定位置插入
erase(pos,ele)//删除指定位置
clear();//清空
v1[i]//访问元素
v1.at(i)//访问元素
v1.front()//获取第一个元素
v1.back()//获取最后一个元素
v1.swap(v2);//交换容器 可以收缩空间
v.reserve();//预留空间
string容器
string的构造函数
string s1;
const char * str = "hello word";
string s2(str);
string s3(s2);
string s4(10,'a');//aaaaaaaaaa
string拼接
string str ="我"
str+="爱玩游戏"
str.append("game asd")
//查找rfind从右往左查
str.find("cz")
str.rfind("cz")
//替换
string str1 ="abcdf"
str1.replace(1,3,"1111")//a1111bcdf
字符串比较
string str1="hello";
string str2="hello";
int ret = str1.compare(str2);
//插入
str1.instert(1,"111");//h111ello
//删除
str1.erase(1,3);
//截取
str1.substr(0,3)
deque容器
双端数组
stack容器
栈容器 push() pop() top(),先进后出
queue容器
先进先出的数据结构push() front()
list容器
链表结构 sort()排序 从小到大 reverse()反转
排序规则:按年龄升序,按身高降序
bool comparePerson(Person &p1,Person &p2)
{
if(p1.m_Age==p2.m_Age)
{
return p1.m_Height>p2.m_Height;
}
return p1.m_Age<p2.m_Age;
}
L1.sort(comparePerson);
set/mutiset容器
所有元素都会在插入的同时自动排序,set不允许有重复的元素 s1.insert
mutiset允许有重复元素