重温C++ —— Chapter 3 标准库类型

抽象 —— 不需要知道它们(类)是如何实现的,只需要知道这些抽象数据类型支持那些操作就可以了。

C++标准库中也包含有C标准库,在C++版本的C标准库的头文件都是'c'开头的,表示这个头文件源自C标准库。如ctype.h

C++中有限选用 '!=' 来判断循环条件,而不是 '<' 。

所有的标准容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。

const_iterator 和 const iterator不是一回事。
const iterator 几乎没什么用,因为该iterator一旦初始化,就不能再改变,及固定指向了容器中的某个元素。
const_iterator 用于读取容器中的元素,但不能改变其值。

任何改变容器长度的操作都会使已有的iterator失效。

使用bitset,如果要处理二进制位的有序集。


#include <iostream>
#include <vector>
#include <string>
#include <iterator>
using namespace std;

int main()
{
    string word;
    vector<string> text;

    while (cin >> word) { //ctrl+d finished the input
        text.push_back(word);
    } 

    cout << "use for cicle:" <<endl;
    for (vector<string>::size_type ix = 0; ix != text.size(); ++ix) {
        text[ix] = "text[ix]: " + text[ix];
        cout << text[ix] <<endl;
    } 

    cout << "use iterator:" <<endl;
    for (vector<string>::iterator iter=text.begin(); iter != text.end(); iter++) {
        *iter = "iterator: " + *iter; //ok
        cout << *iter <<endl;
    } 

    cout << "use const_iterator:" <<endl;
    for (vector<string>::const_iterator iter=text.begin(); iter != text.end(); iter++) {
        //*iter = "const_iterator" + *iter; //error, const_iterator
        cout << *iter <<endl;
    } 

    return 0;

}


你可能感兴趣的:(重温C++ —— Chapter 3 标准库类型)