算法学习笔记_1
23.4
1. 一个C++输入时加速的好办法。
#include
using namespace std;
int main(){
std::ios::sync_with_stdio(false);
cin.tie(0);
return 0;
}
ios::sync_with_stdio(false) 是 C++ 中的语句,用于关闭与 stdio 的同步。这样做可以提高输入输出效率。
2.杂七杂八
忙于计设三创,几周没写题…
其实今天写题感觉比之前顺手很多,一些以前觉得不好写的题今天几十分钟就看明白然后A了,虽说自己还是很菜,但是感觉是有进步的,只是“决定开始写题”的起步反而最难罢了。
打算这一学期坚持每天写洛谷,补补自己之前的算法短板,暑假就开始刷牛客。
共勉吧
23.5
面向对象C++
1. C++概论
1.创建类和继承子类(shape 和 rectangle、circle)
2.使用 虚函数 实现 多态调用
3.自定义头文件的创建和声明
2. C++基本语法
- 引用:由类型标识符和一个取地址符(&)定义,必须被初始化。(主要用作函数形参)
int ival = 100;
int &refval = ival;
const int& rc = 10; //限定引用,编译器生成值为10的临时对象,rc指向该对象
//refval是指向ival的引用
- 字符串类----string
#include<string>
using namespace std;
int main() {
string s1, s2 ("yes"),s3;//字符串赋值 直接初始化(隐式形式)
s1 = "no";//赋值初始化 (显式形式)
s3 = s1 + "oh" + s2; //字符串连接
s1 += "bye" //末尾追加
int x, len = s1.size(); //求字符串长度
bool judge = empty(s1); //判断字符串是否为空
x = strlen(s1.c_str()); //将string转换为C风格字符串,得到C风格字符串首地址
}
- vector
#include<vector>
using namespace std;
int main() {
vector<int> iv(10); //数组习惯
vector<int> vi; //STL习惯
}
- 整数文字常量
(1)027(八进制) 27(十进制) 0x(十六进制)
(2)27L(long类型) 27UL(无符号long类型) 27u(无符号)
(3)235.8 = 2.358E2 (科学记数法)
(4)3.14F(float浮点数) 3.14L(long double 类型)
- 字符文字常量
- 位运算符
(1)~ 按位非 :对操作数每一位取反
(2)<< , >> 二元运算 : 对无符号整数,左移一位相当于乘2,右移一位相当于除2
(3)& 按位与,|按位或,^ 按位异或 :都需要两个整值操作数
x = x ^ y;
y = x ^ y;
x = x ^ y;
//实现交换变量 x 和 y 的值
- 动态存储空间的管理 new和delete
(1)new表达式分配的空间用delete运算符释放
//new的三种表达形式(返回新分配的对象的指针)
//第一种用于分配特定类型的单个对象
int* ip1 = new int;
*ip1 = 521; //new 类型 并赋值512
delete ip; //释放了空间,ip成为空悬指针
int* ip2 = new int(100); //new 类型(初始值)
//第二种可以在堆上分配特定大小数组并返回首地址
int* ipa = new int[100]; //new 类型[数组大小]
delete[] ipa; //释放指针ipa指向的数组,将空间归还动态存储区
//第三种:定位new表达式
#include <new>
using namespace std;
char* buf = new char[1000];//预分配一段空间,首地址存于buf
int main() {
int* pi = new (buf) int;
//在buf中创建一个int对象,此时不再从堆上分配空间
}
(堆上的空间在使用之后必须释放,否则会造成内存泄露)
-
条件运算符
(1)C++中唯一一个三元运算符
int min(int ia, int ib) {
return (ia < ib) ? ia : ib;
}
// 这段代码是如下代码的简写形式:
int min(int ia, int ib) {
if (ia < ib) return ia;
else return ib;
}
-
Switch语句
switch ( expression ) { case n1: statement1; case n2: statement2; //… case n: statementnn; default: statementn; }