C / C++
Warning本文发布于 2022/04/14,内容可能已过时。
一些小语法
缓冲区
stringstream
用 getline
与 ss
可以先读取一整行的数据,再用流传出去
在 C++11
前,没有 to_string
的时候:
模板 template
函数传参类型
在 C++11 中,函数的传参类型有 传值调用、传常量引用调用、传引用调用 和 右值引用调用。其实就是一下的种类:
而使用的区别就在于:
- 对于不被改变的 基本数据类型 (如
int add(int a, int b)
),就普通地传形参就行 - 对于不被改变的 非基本数据类型 (如
vector
或string
),就传常量引用 - 对于会被改变的数据 (如
void swap(int& a, int& b)
),就引用传值
其中,第二条的原因在于,如果仅是传形参,实际上调用的是参数的 拷贝构造函数,相较于传地址过去会带来极大的消耗
左值引用与右值引用
在 C++ 11 中,引入了左值与右值。简单地来讲,赋值等号左边的是左值,指可取地址的具体变量;等号右边的是右值,通常为没有明确地址的临时值
引用的本质就是通过指针操作的别名,可以通过引用来修改该地址变量的值。函数传参时传引用可以避免耗时的拷贝
非要给右值引用传左值的话,就得用到 std::move()
了,它唯一的作用只是 把左值强制转化为右值
一些使用例:
-
触发情况
-
非基本数据类型的
swap()
,是通过move()
来交换而不是复制(当然,在 标准库std::swap()
中,对右值引用的交换也是通过move
来实现的)
在标准库中,对于非基本数据类型都传了引用值,而且都分了左右引用的两个版本)对吧……
C 語言中に
数组长度
memset
批量赋值只能是 char
用,int
只能给 -1 或 0, 而:
ctime
- 时间戳获取与转换
- 当前时间
cpp time_t t = time(&t); string s = ctime(&t); cout << s << endl;
cctype
:
#include<cctype>
: