首页 > 代码库 > c++学习之map基本操作

c++学习之map基本操作

map作为最常用的数据结构之一,用的好可以大幅度的提升性能。

// java_cpp_perftest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <map> //map
#include <string>
#include <iostream>
#include <objbase.h> // uuid使用到
using namespace std;
#define GUID_LEN 64  
int _tmain(int argc, _TCHAR* argv[])
{
    int i,j;
    // map定义
    map<int, string> mapStudent;
    for (i=0;i<10000;i++) {
        // 创建UUID, vc专用, linux通用的可参考http://www.cnblogs.com/lidabo/p/3602038.html
        char buffer[GUID_LEN] = { 0 };  
        GUID guid;  

        if ( CoCreateGuid(&guid) )  
        {  
            fprintf(stderr, "create guid error\n");  
            return -1;  
        }  
        _snprintf_s(buffer, sizeof(buffer),   
            "%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X",   
            guid.Data1, guid.Data2, guid.Data3,   
            guid.Data4[0], guid.Data4[1], guid.Data4[2],   
            guid.Data4[3], guid.Data4[4], guid.Data4[5],   
            guid.Data4[6], guid.Data4[7]);  
        // map插入
        mapStudent.insert(pair<int, string>(i, buffer));
    }

    // 获取时间相对计数器, vc专用
    DWORD begin = GetTickCount();
    int f;
    for (j=0;j<100;j++) {
        for (f=0;f<10000;f++) {
            // map查找
            mapStudent.find(f);
        }
    }
    DWORD end = GetTickCount();

    // 打印时间差
    cout << (end - begin) << endl;  //就我们VS2012测试来看, 这一步居然要4s左右, 相同情况下,JDK 8只用了20ms

    // map遍历
    map<int, string>::iterator  iter;
    for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++)
    {
        cout << iter->first << "   " << iter->second << endl;
    }
    system("pause");
}

 

c++学习之map基本操作