C++Primer学习(第三章)

string

初始化string对象的方式

string s1;
string s2(s1);
string s2=s1;
string s3(“value”);
string s3=“value”;
string s4(n,‘c’);

使用getline读取一整行

int main()
{
	string line;
	while(getline(cin,line))//包括空白符,出发getline函数返回的那个换行符实际上被丢弃了
		cout<<line<<endl;
	return 0;
}

string可以和string或字符串或字符相加
判断字符的类型 cctype

isalnum© //c是字母或数字为真
isalpha© //c是字母时为真
iscntrl© //c是控制字符时为真
isdigit© //c是数字时为真
isgraph© //c不是空格但可以打印时为真
islower© //c是小写字母时为真
isprint©//c是可打印字符时为真
ispunct© //c是标点符号时为真
isspace© //c是空白时为真
isupper©//c是大写字母时为真
isxdigit© //c是16进制数字时为真
tolower© //大写转小写
toupper© //小写转大写

C++11遍历string

string str;
for(auto c:str)
	cout<<c<<endl;

迭代器

auto b=v.begin();//首元素
auto e=v.end();//尾元素的下一位置!!!!

数组

如果不清楚元素的确切个数,请使用vector

理解复杂的数组声明(从内向外读,从右向左读)

int (*Parry)[10]=&arr//指向含有10个整数的数组
int (&arrref)[10]=arr;//引用一个含有10个整数的数组

C++11遍历数组

for(auto i:scores)
	cout<<i<<" ";

指针和数组

使用数组的时候,编译器一般会把它转换成指针
对数组元素使用取地址符就能得到指向该元素的指针
编译器将数组名替换为指向数组首元素的指针
sizeof(数组名)=元素个数×元素所占空间
int *p=数组名;sizeof§=指针指向类型的大小
当数组作为函数的参数进行传递时,数组自动退化为同类型的指针。

在一些情况下数组的操作实际上是指针的操作
使用数组作为auto变量的初始值时,推断得到的类型是指针而不是数组。

指针也是迭代器

获取数组尾元素之后那个并不存在的指针,尾后指针不指向具体的元素,因此不能对其执行解引用等操作。

int *e=&arr[length];//length为数组维度

标准库begin(),end(),类似vector等容器的方法

int a[10]={};
int *b=begin(a);
int *e=end(a);

下标和指针

对数组执行下标运算其实是对指向数组元素的指针执行下标运算
vector等标准库类型的下标运算必须是无符号类型,数组下标等内置类型无次要求

int *p=&a[2];
int k=p[-2];//k=a[0]

使用数组初始化vector

int arr[]={0,1,2,3,4,5}
vector<int> ivec(begin(arr),end(arr));//可以得到数组头尾指针了
vector<int> ivec(arr,arr+3);//也可以拷贝一部分(arr[0],arr[1],arr[2])

多维数组

C++11范围for循环,把管理数组索引的任务交给系统来完成。
使用范围for循环,除了最内层的循环外,其它所有循环的控制变量都应该是引用类型

size_tcnt=0;
for(auto &row:ia)
	for(auto &col :row)
		col=cnt;
		++cnt;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值