zoukankan      html  css  js  c++  java
  • 关于map 容器insert顺序

      今天测试我的节点,maya一次次死掉,一点一点的打印测试,良久才知:我想当然的将插入map的顺序,作为我执行的顺序直接遍历,打印数据显示,map有自动将键值排序的功能,比如以字符串为例,会按照a、b、c....顺序排好。

       而且对于map,如果一个元素key不存在,但是直接map[key],那么map的size就增加1,我感觉有点儿相当于insert,但map[key]没有值。这样很不规范,对于有一定代码量的程序测试造成不必要的困扰,所以最好使用find函数,判断是否==map.end()

    关于string、和char *

    下面是一则小程序,打印的数据

    #include<string.h>
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    
    int main()
    {
        char *str = "string";
        if(str == "string" )
            cout<<"str = "<<str<<endl;
        else
            cout<<"nothing"<<endl; 
        return 0;
    
    }

    结果打印的是:

      str = string

    但是执行下面代码:

    /*
    #include<stdio.h>
    #include <windows.h>
    #include <conio.h>
    #include <stdlib.h>
    #include <malloc.h>
    #include <memory.h>
    #include <tchar.h>
    int main(int argc, _TCHAR* argv[])
    {
        //const LPCWSTR appname = TEXT("BLess the day");
        //SetConsoleTitle(appname);
        HANDLE hInput = GetStdHandle(STD_INPUT_HANDLE); // 获取标准输入设备句柄 
        INPUT_RECORD inRec;
        DWORD res;
        while (1) 
        {
            ReadConsoleInput(hInput, &inRec, 1, &res); 
            if (inRec.EventType != MOUSE_EVENT && inRec.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) //鼠标左键  
            {   
                SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),inRec.Event.MouseEvent.dwMousePosition);
                printf("Hello World!");  
            }  
            Sleep(10); 
        } 
        return 0;
    }
    
    */
    #include<string>
    #include<string.h>
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    
    int main()
    {
        char chr[255] = "string";
        char *str = chr;//编译器做了隐式的转换 实际为&chr或(char *str = &chr;在一些编译器甚至会报警告信息)
        if(str == "string" )
            cout<<"str = "<<str<<endl;
        else
            cout<<"nothing"<<endl; 
        return 0;
    
    }

    结果是:

      nothing

    遇见了,话说是char[]不能直接和string比较的原因,

     

    指针是不分配内存的,它指向的是系统的只读的内存,而数组是分配内存的,就是将系统的只读的内存里面的值复制到它的内存里面,因此可读写
    http://duanhengbin.iteye.com/blog/1706635
    http://zhidao.baidu.com/link?url=bkNqC8gndvsg93lqceJVNk0VwlbitmHbJhwfG8H8CRO1H6zEGdR7GIxboEsrvty-vcvd18KyLESP-hEseFFknK
  • 相关阅读:
    重启服务器后,托盘自启动
    【转】微服务(概念篇):什么是微服务?一篇文章让你彻底搞明白
    发送Http请求调用webService
    sqlserver查询数据库中有多少个表,多少视图,多少存储过程,或其他对象
    CDATA嵌套问题
    Mysql字符串字段判断是否包含某个字符串的3种方法[转载]
    处理jQuery选择器中的特殊符号,如(、#等
    js数组合并(一个数组添加到另一个数组里面)方法
    spring boot web项目在IDEA下热部署解决办法(四步搞定)
    javascript对数组分页
  • 原文地址:https://www.cnblogs.com/konkon/p/3848591.html
Copyright © 2011-2022 走看看