c++随笔

1.while条件中加逗号的写法

  c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。

2.使用" using namespace std;"  

  98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。

3.传值不传参  

struct node{
	int a;
};

stack 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这个慢其实比大容量数组我们自己移动快很多好伐

你可能感兴趣的:(c++随笔)