标签:style blog http ar color os 使用 sp 文件
从《C++标准库》里面看到的一些技巧,以及自己遇到的一些技巧,备忘。
1 copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(vInput));//从cin中读取string 类型的数据存入 vInput 这个vector
更多迭代器:http://www.cnblogs.com/L-hq815/archive/2012/08/28/2660714.html
这里的流可以是标准输入输出流,也可以是文件流,各种流了,然后就是各种容器
1 copy(aDeque.begin(), aDeque.end(), ostream_iterator<int>(cout, "\n"));//向标准流中打印容器的元素
在C++有两种字符串流,也称为数组I/O流,一种在sstream中定义,另一种在strstream中定义。它们实现的东西基本一样。sstream 是基于std::string编写的,strstream是基于C类型字符串char*编写的
string到int的转换
1 string result=”10000”; 2 int n=0; 3 stream<<result; 4 stream>>n;//n等于10000
更多资料:http://www.cppblog.com/Sandywin/archive/2008/08/27/27984.html
当然也有 atoi、itoa等一堆转换函数
以及sprintf、sscanf等一堆c语言的格式化函数
1 //伪代码 2 sstream ss; 3 ss << "C:\\"<< num <<".jpg";
vector.reserve()会保持一定的内存,vector的容量不会缩减(resize只会改变元素的个数),间接缩减容量的方法,两个vector交换之后,两者的容量也会交换。
1 #include<limits> 2 cout << "int max:" << numeric_limits<int>::max() << "\t\tint mini: " << numeric_limits<int>::min() << endl; 3 cout << "float max:" << numeric_limits<float>::max() << "\t\tfloat min: " << numeric_limits<float>::min() << endl;
//删除容器中所有为3的值
type::iterator newEnd = remove(aDeque.begin(), aDeque.end(), 3); distance(newEnd,aDeque.end())//删除元素的个数 aDeque.erase(newEnd,aDeque.end())//真正删除元素
比如输入序列为:1 2 3 4 5 6 7 8
要删除 3
则remove后变为 1 2 4 5 6 7 8 8 元素的个数和end()的指向都没有变连大小都没有变(应该移除的元素被后面的元素覆盖)
erase() 后才真正将大小和end()的位置改变
总结起来就是一句话
xx.erase(remove(xx.begin(),xx.end(),xx),xx.end());
产生原因:
迭代器和容器是分开的,虽然达到了最大的灵活性,但是迭代器无法调用容器的任何方法
书中还有更加详尽的各种标准库组件的使用,可以当做手册。
未完待续……
标签:style blog http ar color os 使用 sp 文件
原文地址:http://www.cnblogs.com/pasion-forever/p/4139019.html