容器类、迭代器及示例

顺序容器类vector

#include <iostream.h>
#include <VECTOR>                                // 包含vector类所在的头文件

using namespace std;                            // 使用标准命名空间

typedef vector<int> MYINTVECT;                    // 自定义容器模板的数据类型
#define ORDER_COUNT 12                            // 定义订单数量
int main(int argc, char* argv[])
{    
    MYINTVECT ordervector(ORDER_COUNT);            // 定义自定义
    for(int i = 0; i < ORDER_COUNT; i++)        // 填充订单容器变量中的值
    {
        int iTemp = i+1;                        // 定义临时变量
        cout << "[" << iTemp << "] ";            // 输出变量值
        ordervector[i] = iTemp;                    // 赋值vector变量值
    }
    cout << endl;

    cout << "存储在STL的vector容器中的数据有:" << endl;
    for(int j = 0; j < ORDER_COUNT; j++)        // 输出订单容器变量中的值
        cout << "[" << ordervector[j] << "] ";
    char l; cin >> l;                            // 等待用户响应
    return 0;                                    // 主函数退出返回
}


关联容器类set

#include <iostream.h>
#include <set>                                    // 引用set类所在的头文件

using namespace std;                            // 使用标准命名空间

typedef set<float, less<float>, allocator<float> > MYFLOATSET;    // 自定义存储浮点型的集合数据类型
int main(int argc, char* argv[])
{
    MYFLOATSET myfset;                            // 声明浮点型集合变量
    MYFLOATSET::iterator myfsetPtr;                // 声明浮点型迭代变量
    float fTemp;                                // 声明临时变量

    srand(1);                                    // 生成随机种子
    cout<< "为set变量赋值:" << endl;
    for(int i = 0; i < 9; i++)
    {
        fTemp = rand();                            // 生成随机数
        fTemp /= 100;                            // 取浮点型
        cout << "[" << fTemp << "] ";            // 输出生成的浮点数
        myfset.insert(fTemp);                    // 将浮点数添加到set中
    }
    cout << endl << "从set变量中获取数据" << endl;    
    for(myfsetPtr = myfset.begin(); myfsetPtr != myfset.end();    myfsetPtr++)    // 使用迭代指针
        cout << "[" << *myfsetPtr << "] ";        // 输出每个元素的值

    char l;    cin >> l;                            // 等待用户响应
    return 0;                                    // 函数返回退出
}


迭代器iterator

#include <iostream>
#include <string>
#include <list>                // 包含包括列表定义的list头文件

using namespace std;        // 引用标准命名空间

typedef list<string> STRINGLIST;    // 重定义字符串列表类型

int main(int argc, char* argv[]) 
{
    STRINGLIST myList;                // 定义字符串列表变量
    STRINGLIST::iterator myListIt;    // 定义字符串枚举器变量   

    myList.push_back("张三");        // 向字符串列表中增加数据
    myList.push_back("李四");        // 向字符串列表中增加数据
    myList.push_back("王五");        // 向字符串列表中增加数据
    myList.push_back("赵六");        // 向字符串列表中增加数据
    myList.push_back("田七");        // 向字符串列表中增加数据
    myList.push_back("欧阳");        // 向字符串列表中增加数据
    myList.push_back("上官");        // 向字符串列表中增加数据

    cout << "列表中的数据有: " << endl;    // 输出提示信息
    myListIt=myList.begin();            // 初始化链表迭代器,指向链表头
    for (myListIt=myList.begin(); myListIt != myList.end() ; myListIt++)    // 通过循环依次输出链表中的内容
        cout << "[" << *myListIt  << "]  ";        // 输出迭代器当前指向的元素的值

    myListIt=myList.begin();            // 初始化链表迭代器,指向链表头
    advance(myListIt, 2);                // 指向链表的第3个元素
    cout << endl << "第三个元素=" << *myListIt << endl;    // 输出第三个变量的值   
    cout << "当前节点到链表尾还有" << distance(myListIt, myList.end()) << "个数据结点";    // 输出迭代器当前元素距离链表尾元素的个数
    char l;  cin >> l;
    return 0;
}
原文地址:https://www.cnblogs.com/chun-xi/p/3454744.html