赞
踩
C++中的常用遍历方式:
无论是C 语言还是C++ ,我们最常用到的遍历方式便是 for ( ; ; ) 循环的方式,一一遍历数组/字符串内容然后将其打印,接下来我们一起来看看常用遍历方式:
一.普通的 for 循环遍历
首先我们来看看一组打印代码:
string str1="12345";
int i=0;
for(;i<str1.size();++i){
cout<<str1[i]<<" ";
}
cout<<endl;
上述代码就是一段普通的用 for 循环来打印字符串内容的代码,接下来将介绍另外一种打印方式:iterator 接口
二、迭代器 iterator
迭代的使用类似于指针,同样可以进行 解引用操作和自增操作
(一)begin 接口与 end 接口
iterator begin();
const_iterator begin() const;
iterator end();
const_iterator end() const;
1.可读可写型
迭代器是一种元素的通用访问机制,它的主要用法:
string str1="12345";
string::iterator it=str1.begin();
while(it!=str1.end()){
cout<<*it<<" ";
++it;
}
cout<<endl;
这里的 begin 与 end 是 iterator 接口中常用迭代器,其中 begin 迭代器指向字符串 str1 的首元素位置,end 迭代器指向字符串 str1 的尾元素的下一个位置
其中,使用 iterator 接口可以进行元素指向内容的修改:
string str1="12345";
string::iterator it=str1.begin();
while(it!=str1.end()){
*it=‘a’;
cout<<*it<<" ";
++it;
}
cout<<endl;
主要是因为这里使用的是 非 const 接口,因而可以进行字符串内容的修改,iterator 接口为可读可写。
2.只读型
倘若使用第二个 const 接口,在 debug 版本之下进行调试就会发生中断操作,但是在 Release 版本之下不会报错:
主要是因为这里使用了const 修饰,因而字符串内容是不可以利用引用类型来修改,此时 iterator 接口是只读型接口。
(二)cbegin 接口与 cend 接口
const_iterator cbegin() const
const_iterator cend() const
可以看出来这两个接口都是被 const 修饰,因而cbegin / cend 都是只读迭代器,不可以修改其内容
当使用 *it 来修改字符串内容时,出现了错误提示
(三)rbegin / rend 接口
rbegin 与 rend 是反向迭代器,rbegin:指向最后一个元素的位置;rend:指向第一个元素的前一个位置
接口说明:
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
reverse_iterator rend();
const_reverse_iterator rend() const;
三、范围 for
for(当前需要查找的遍历:需要遍历的容器)
常见范围 for 书写形式:
1.只读:for(const auto& 变量:需要遍历容器)
2.可读可写:for(auto& 变量:需要遍历的容器)
void test()
{
string s = "13456";
for (char ch : s) {
cout << ch << " ";
}
cout << endl;
}
在进行练习时候要注意是否被 const 修饰(可读可写 / 只读),注意正确的调用接口
今天的分享就到此结束了,有任何问题可以留言哦~~
美好的一天从敲代码开始 ,加油!
biubiubiu~~~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。