2016年你最想对自己说啥( 十 )
#include \u0026lt;iostream\u0026gt;#include \u0026lt;string\u0026gt;using namespace std;int main(){\tstring str("some string"); //声明string类型变量,并初始化\tfor(auto c : str) //对于str中的每一个元素,for循环的新的使用方法\t\tcout \u0026lt;\u0026lt; c \u0026lt;\u0026lt;endl; }string s("Hello world");decltype(s.size()) punct_cot = 0; 这个是decltype的用法。把punct_cot声明成s.size()类型,它是string::size_type类型。string s("Hello World");for ( auto \u0026amp;c : s) //对于s中的每一个字符,注意,c是引用c = toupper(c); //由于c是引用,因此赋值语句将改变s中的值。cout \u0026lt;\u0026lt; s \u0026lt;\u0026lt; endl;#include \u0026lt;iostream\u0026gt;#include \u0026lt;string\u0026gt;using namespace std;int main(){\tstring str("some string");\tfor(auto \u0026amp;c : str)\t{\t\tc = toupper(c);\t\tcout \u0026lt;\u0026lt; str \u0026lt;\u0026lt;endl; //由于输出语句也是放在for循环内,因此,每次改变str为大写,都会输出一遍,有endl和没的区别是,一个竖着输出,一个横着输出,也就是有没有换行符。\t}}string的下标也是一个size_type类型。因此,下标非负。vector\u0026lt;int\u0026gt; 或vector\u0026lt;string\u0026gt; 或vector\u0026lt;vector\u0026lt;int\u0026gt;\u0026gt;vector是个模板,而非类型。它里面的元素是\u0026lt;\u0026gt;中的类型。vector的下标可以用来访问已有的元素,但不能添加新元素,添加新元素需要用push_backiterator迭代器。string不属于容器类型,但它支持很多与容器类似的操作。迭代器类似指针,都提供了对对象的间接访问。所有有解引用迭代器 *iter及 iter-\u0026gt;men之类的操作。迭代器中的for循环不用\u0026lt;来做为结束条件,而是使用!=的方式。vector\u0026lt;int\u0026gt;::iterator it; //it能读写vector\u0026lt;int\u0026gt;的元素string::iterator it2; //it2能读写string对象中的字符vector\u0026lt;int\u0026gt;::const_iterator it3; //it3只能读元素,不能写元素string::const_iterator it4; //it4只能读字符,不能写字符(*it).empty() 前面的*it必须有括号,因为说明先对it做解引用处理,然后解引用后,在empty函数。由于这种方式是比较麻烦的,因此(*it).empty()可以用it-\u0026gt;empty()的形式来处理。谨记,但凡使用率迭代器的循环体,都不要向迭代器所属的容器添加元素。迭代器会失效。#include \u0026lt;iostream\u0026gt;#include \u0026lt;string\u0026gt;using namespace std;int main(){\tstring te ("abcdefghijklmnopqrstuvwxyz");\tauto b = te.begin(),e=te.end();\tauto mid = te.begin() + (e-b)/2;\tchar sought = \u0026#39;a\u0026#39;;\tint cnt = 0;\twhile(mid != e \u0026amp;\u0026amp; *mid != sought)\t{\t\tif(sought \u0026lt; *mid)\t\t{\t\t\te = mid;\t\t}\t\telse\t\t{\t\t\tb = mid + 1;\t\t}\t\tmid = b +(e-b)/2;\t\tcnt++;\t}\tcout \u0026lt;\u0026lt; cnt \u0026lt;\u0026lt;endl;}用C++的迭代器来实现的二分查找#include \u0026lt;iostream\u0026gt;#include \u0026lt;string\u0026gt;using namespace std;int main(){\tstring te ("abcdefghijklmnopqrstuvwxyz");\tfor(auto i = te.begin(); i != te.end(); i++)\t{\t\tauto b = te.begin(),e=te.end();\t\tauto mid = te.begin() + (e-b)/2;\t char sought = *i;\t int cnt = 1;\t\twhile(mid != e \u0026amp;\u0026amp; *mid != sought)\t {\t\t\tif(sought \u0026lt; *mid)\t\t\t{\t\t\t\te = mid;\t\t\t}\t\t\telse\t\t\t{\t\t\t\tb = mid + 1;\t\t\t}\t\t\tmid = b +(e-b)/2;\t\t\tcnt++;\t }\t\tcout \u0026lt;\u0026lt; *i \u0026lt;\u0026lt;" " \u0026lt;\u0026lt; cnt \u0026lt;\u0026lt;endl;\t}}
推荐阅读
- 手机■遇“纠纷”自己报警被识破 男子假卖手机骗60多万
- 有啥方法,网站,项目可以自己练习计算广告学
- 设计专业学生上传自己的作品,用哪个网站比较好
- 趣头条|先下手为强!喜提途观X,自己先享受才是最重要的
- 商家通过低保户购物而把自己的利润返还赠送低保户安装宽带或者旧电脑可行吗
- 学的自动化却对IT比较感兴趣。。感觉对自己的专业帮助不大,好苦恼,要不要继续是专精还是学点感兴趣的?
- 特斯拉|把小鹏P7开上高速,它竟然自己跑起来了!
- 企业信息化系统可否自己搭建
- 大学选修课该咋选兴趣还是那些容易过的
- 派出所|柳州民政局回应“市民无法证明自己是自己”:正帮助补领结婚证
