容器類、迭代器及示例

順序容器類vectorios

#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;                                    // 主函數退出返回
}


關聯容器類setless

#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;
}
相關文章
相關標籤/搜索