zoukankan      html  css  js  c++  java
  • 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
    ");  
                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");
    }

     更多可参考http://blog.sina.com.cn/s/blog_a9303fd9010195hm.html。

  • 相关阅读:
    BZOJ 4010: [HNOI2015]菜肴制作( 贪心 )
    bzoj 1084
    bzoj 2763
    bzoj 1003
    bzoj 1858
    codevs 1296
    cf 438D
    vijos 1083
    codevs 3303
    bzoj 1296
  • 原文地址:https://www.cnblogs.com/zhjh256/p/6346501.html
Copyright © 2011-2022 走看看