您的位置:首页 > 编程语言 > C语言/C++

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

2016-06-13 19:56 337 查看
  昨天去苏州出了一天差,现场调试机器,所以没有更新。今天继续学,前天的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
;  //返回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而非字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 学习笔记