标签:c++ primer const_iterator size_type getline
(一)getline的用法我们通常用getchar()吃掉不应该存在的换行符。
#include <iostream> #include <string> #include <cstring> using namespace std; int main() { int a; cin >> a; getchar(); //不加的话会导致getline读入回车当作第一次输入 while (a--) { string s; getline(cin, s); cout << s << endl; } return 0; }(二)关于string::size_type
string str = "welcome to the icpc world!"; string::size_type len = str.size(); cout << len << endl; 此外vector的size也返回size_type类型 vector<int>::sizetype //ok vector::size_type //error ,vector只是类模版具体机器的区别可以参考 http://blog.csdn.net/zhongzhiwei/article/details/8678885
vector<int> ivec; for (vector<int>::size_type ix = 0; ix != ivec.size(); ++ix) ivec[ix] = ix;C程序员倾向于使用小于,而C++程序员更倾向于使用不等于,这可能出于习惯原因,实际上,C++中有大量的面向迭代器的代码,对于更多的人来说,遍历数据的时候迭代器“不等于”迭代器尾标可能与“小于”迭代器尾标相比可以更形象地描述问题。
vector<string> text; for (vector<string>::const_iterator iter = text.begin(); iter != text.end(); ++iter) { cout << *iter << endl; *iter = " "; //error,const不可改变 }
另外,要注意const_iterator 对象和const的iterator对象是不一样的,后者是声明一个const迭代器,必须初始化值,并且不能改变。
vector<int> nums(10); const vector<int>::iterator cit = nums.begin(); *cit = 1; //ok ++cit; //error 这种应用没什么实际用处。
版权声明:本文为博主原创文章,未经博主允许不得转载。
C++ Primer 学习笔记与思考_4 ---getline&&size_type&&const_iterator混搭
标签:c++ primer const_iterator size_type getline
原文地址:http://blog.csdn.net/nk_test/article/details/47658321