【每天学一点】C++基础04

  昨天去苏州出了一天差,现场调试机器,所以没有更新。今天继续学,前天的C++03,发出去发现少了一半,我发现CSDN里在线保存,只能保存第一次保存的东西,第二次保存退出后,显示的还是第一次的内容。这好烦,那我就先开始总结一下上次学的,然后再看点别的了。
  


vector:容器,使用需要加#include<vector>

定义初始化:

vector<T> v1 //v1是一个空vector,它的潜在元素都是T类型,执行默认初始化
vector<T> V2=V1 || v2(v1) //v2=v1
vector<T> v3(n) || v4(n,val)  //v3有n个重复元素,执行了初始化
vector<T> v5{a,b,v……} ||v5={a,b,c……}  //v5包含初始值个数,且对应初始化

v.push_back(a) 把a添加到v的尾端

v.empty();
v.size();
v.push_back(a);
v[n];  //返回v中第n个元素的引用

注意:

vector<int> v1;
for(decltype(v1.size()) I=0;i!=10;++i)
  v[i]=i; //错误,v不包含任何元素

迭代器:访问string对象的字符或vector对象的元素

auto b=v.begin();  //b表示v的第一个元素 
auto e=v.end();   //e表示v的尾元素的下一个位置

迭代器运算符:

*iter;  //返回迭代器iter所指元素的引用
++iter;
--iter;
iter->mem=(*iter).mem;

迭代器的运算:

iter+n
iter-n
iter+=n
iter1-iter2

二分查找法:

//text有序
auto beg=text.begin(),end=text.end();
auto mid=text.begin()+(end-beg)/2//初始状态下的中间点
while(mid!=end&&*mid!=sought){
  if(sought<*mid)
    end=mid;
  else
    beg=mid+1;
  mid=beg+(end-beg)/2;
}

C风格字符串:字符串存放在字符数组中并以空字符结束,即后面加(’\0’)

char a[4]="lyys"; //错误,初始值过多。后面应留'\0'

C标准库String函数

#include<cstring>
strlen(p)  //返回P的长度,空字符不计算在内
strcmp(p1,p2)  //比较p1和p2的相等性。若p1==p2返回0;若p1>p2返回一个正值,相反负值
strcat(p1,p2)  //将p2附加到p1后,返回p1
strcpy(p1,p2)  //将p2拷贝给p1,返回p1 

标准库函数begin和end

//#include<iterator> 似乎可无 
int ia[]={0,1,2,3}
int *beg=begin(ia);  //指向ia首元素指针 
int *end=end(ia);    //指向ia尾元素的下一个位置指针 

 使用数组初始化vector对象

 int arr[]={0,1,2,3};
 vector<int> v(begin(arr),end(arr)); 
 

移位运算符

//位求反
<< //左移  char8位,int32位,移出丢弃,补0 
>> //右移//位与 
^  //位异或 
|  //位或 

sizeof运算符:返回一个表达式或类型名字所占用字节数

const int *p=8;
sizeof(*p)  //p所指类型空间的大小
sizeof(p) //指针所占空间大小 

命名的强制类型转换:
1.static_cast  除了const,只要明确类型的转换都可以使用

double a=static_cast<double>(j)/i ;

2.const_cast  只能改变const,即去掉常量性质

const int *a;
int *b=const_cast<int*>(a); 

3.reinterpret_cast 

int *ip;
char *pc=reinterpret_cast<char>(ip);  //本质上pc所指的是一个Int而非字符 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值