String:
String 类输入:(同时注意对char*字符数组运算时也可看做string做运算,运算符已被重载)
对string:
//可以使用c风格字符串
//可以使用cin将键盘输入存储到string对象
//使用cout
//使用数组下标访问在string对象中得字符
//string为简单变量而不是数组
//c++自动处理string大小
//string构造函数(即这些函数得不同参数得重载),八种构造器(初始化,切片,拷贝),string str(参数)
String::npos为字符串可以存储的最大的字符数,通常是无符号int或者无符号long的最大值,当find方法找不到指定字符时返回string::npos
String一些指常用方法:
Find()方法(对char*亦可)返回的是字符串中第一个指定字符串的开始索引值。
还有相关的其他的find方法,比如找到最后匹配的字符串索引值,或者从最后开始匹配,或者任意字符匹配等等。
其他方法:
Sprint函数与sscanf函数(指定输入流与指定输出流):
输入输出流的操作:
循环拼接:
(注意的是c++中string的+=等这些运算符,如果要频繁循环使用的话,会不停的创建新的对象花费许多不必要的空间)
数据类型的相互转化:
类与对象:
类对象的数据隐藏与封装:
构造器:
在只内部可见的类对象中,批量初始化变量时就要用到构造器:
在函数中参数的设置若在形参名前不加上&则不会对传入数据拷贝,形成临时变量,对数据进行操作,消耗空间,而加上&后则不会消耗空间发生拷贝,而直接对数据进行修改等操作。
函数:
C++标准容器 STL
动态数组:
栈(stack)
Queue:
Priority-queue:
三个参数,第三个参数cmp可以自定义定义(亦可使用系统定义)比较条件:
Map:
初始化,增,改,迭代
Algorithm头文件
#常用的函数
全排列 next_permutation
其他:
ios::sync_with_stdio(false);和 cin.tie(0)加速c++输入输出流
cin cout 相比于scanf与printf效率要低很多,因为cin cout是先要把输出的东西存入缓冲区再输出,这段语句可以用来打消iostream的输入输出缓存,节省时间。
输出实数规定精度:
#include
Cout<<fixed<<setprecision(小数点后几位)<<double<<endl;
//如果不加fixed,那么setprecision()规定的位数则是对于整个实数来说规定的。
使用string作为函数形参:
(std::string 形参名)
使用动态数组输入未知长度的数组(模板):
#include
#include//引入vector头文件
using namespace std;
int main() {
vector array;//定义一个vector数组array
int number;
while (1) {
cin >> number;
array.push_back(number);//每输入一个数字就把它添加到数组的最后
if (cin.get() == ‘\n’)//如果是回车符则跳出循环
break;
}
int len = array.size();//返回数组长度为len
//下面遍历一遍数组看看对不对
for (int i = 0; i < len; i++) {
cout << array[i] << endl;
}
return 0;
}
进制输入输出的转化:
输出时规定输出的十六进制为大写字母:
#include
也可以使用sprintf函数来进行进制转化(如要实现进制转换,改变格式化字符参数即可):
Sprintf函数:(实例)
字符串变量与字符数组之间的相互转化:
定义二维数组的四种方法(静态动态,一维二维)
1、 使用一维数组模拟二维数组:
int a0[] = {1,2,3,4,5,6};
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
cout<<a0[icolumns+j]<<" ";//a0[icolumns+j]等价于a0[i][j]
}
cout<<endl;
}
2、 定义静态二维数组:
int a1[2][3] = {1,2,3,4,5,6};
3、 动态二维数组:
4、 使用vector创建:
链表:构造链表并延续链表模板,一个链表头部,另一个指针用来延续列表:
ListNode head, *tail = &head;
优先级队列的运算符重载:
模板:
//构造一个顶部为最小值的优先级队列
class mycmp {
public :
bool operator() (int a, int b) {
return a > b;
}
};
priority_queue<int,vector,mycmp> q;
动态数组vector的初始化填充:
初始化string对象的几种方法:
哈希表的使用:
C++截取字符串函数:
#注意在c++中字符串切片的操作方法与python并不同:
C++输出控制小数点位数两种方法:
一种为setprecision控制:
另一种为使用printf函数格式化字符控制输出:
C++中vector删除指定元素的几种方法:
C++vector的拷贝问题:
C++string find_first_not_of()与find_last_not_of()