c++随笔
1.while条件中加逗号的写法
c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
2.使用" using namespace std;"
struct node{ int a; }; stack<node> nums; int main(){ node temp; //同一个变量 temp.a = 10; nums.push(temp); printf("%d", nums.top().a); //输出为:10 temp.a = 8; //该变量改变 printf("%d", nums.top().a); //输出为:10
int tmp1,tmp2; //换个更明显的例子
tmp1 = 10;
tmp2 = tmp1;
printf("tmp2:%d\n",tmp2); //“tmp2:10”
tmp1 = 20;
printf("tmp2:%d\n",tmp2); //“tmp2:10” 结果没有改变
c++中两个STL容器a,b,“a = b”,实际上产生了一份独立的拷贝。这是两份独立的拷贝。【任何Windows和Linux环境下】【所有的c++的编译器】都是这样的,因为C++标准库是这样定义的,所以任何编译器在实现标准库的时候都会遵守这条规则
vector<int> a,b; a.push_back(1); a.push_back(1); a.push_back(1); b = a; print(b); //1 1 1 a[2] = 3; print(b);` //1 1 1 print(a); //1 1 3 b = a; print(b); //1 1 3 a[2] = 2; print(b); //1 1 3 return 0;
4.stack常用操作
empty()为空则返回真
pop()移除栈顶元素,无返回值
push()栈顶增加元素
size()返回栈中元素数目
top()返回栈顶元素
5.queue常用操作
push()在队尾插入元素
pop()弹出队首元素,无返回值为void
size()返回队伍中元素的个数
empty()判断是否为空,为空则返回真
front()返回值为队列中第一个元素,未将其踢出
back()返回队伍中最后一个元素,即最后加入队伍的元素
6.sizeof(),strlen(),length(),size()的区别
1、sizeof():返回所占总空间的字节数
(1)、对于整型字符型数组
(2)、对于整型或字符型指针
2、strlen():返回字符数组或字符串所占的字节数
(1)、针对字符数组
(2)、针对字符指针
sizeof(...)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
strlen(...)是函数,要在运行时才能计算。参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。它的功能是:返回字符串的长度。该字符串可能是自己定义的,也可能是内存中随机的,该函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符'\0'。返回的长度大小不包括'\0'。
3.string中length()和size()
c++中的size()和length()没有区别
7.向函数中传递数组时,数组会退化成指针
void demo(int a[10]){ sizeof(a) //计算结果为指针大小 4 }
8.别名函数
9.vector:
在c++语言中使用,是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。/ps 官方用语
节省了很大的时间啦,但是问题也是在这里出现:在中间插入与删除慢,emmm这个慢其实比大容量数组我们自己移动快很多好伐