`
美丽的小岛
  • 浏览: 309394 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

char* 做map 的KEY的思考

    博客分类:
  • c++
 
阅读更多

很明显的道理,不要简单从字面上的东西去理解,虽然char*可以指向字符串,但它毕竟只是一个指针,指针存放的内容只能是地址,请谨记。 而string是一个对象,当传递一个常量字符串(例如"abc")进来时,可以通过string的构造函数自动将该常量字符串转换为一个string对象。 如果把该常量字符串赋值给char*类型,就如同char* p = "abc"; 这个时候p只是一个指向"abc"的首地址的指针而已

 

 

2种修改方式

I

  1. map<std::string, Actor> actorCache;  


II

FROM

  1. struct ptrCmp  
  2. {  
  3.     bool operator()( const char * s1, const char * s2 ) const  
  4.     {  
  5.         return strcmp( s1, s2 ) < 0;  
  6.     }  
  7. };  
  8. map<char *, int, ptrCmp> mapStr;  


 

总结:

首先考虑用I,如果确实对性能要求比较高的在考虑II

http://blog.csdn.net/xpwang168/article/details/8981799

分享到:
评论

相关推荐

    rsa算法设计 密码学

    //extern "C" __declspec(dllexport) int RsaAEncrypt(CString& source,const char* key,const char* R,CStringArray& result);//加密 //extern "C" __declspec(dllexport) CString RsaADecrypt(CStringArray& ...

    STL中map用法详解

    由于`map`是模板类,我们可以用任意可比较的类型作为键,并且值的类型也可以自定义,例如`map, string&gt;`,`map&lt;char*, double&gt;`等。 10. **注意点** - 键必须具有可比较性,即定义了`运算符。 - 当使用自定义...

    libhashmap:一个简单但纯净且轻量的hashmap C库

    Lib HashMap 它是用C语言编写的,针对C开发人员的多用途lightweig hasmap libray。 随时贡献力量,加星叉。安装要在Linux上安装lib,请克隆存储库并...int hashmap_add(struct hashmap **map, const char *key, void

    Hash map implementation in C. .zip

    void insertHashMap(HashMap* map, char* key, void* value) { int index = hashFunction(key, map-&gt;size); // 如果链表为空,创建新的节点 if (!map-&gt;buckets[index]) { Node* newNode = createNode(key, value...

    map和pair配合使用.pdf

    map 可以理解为一个容器,用于存储键值对(key-value)。每个键值对由一个键(key)和一个值(value)组成。map 的键是惟一的,不能重复,而值可以重复。pair 则可以理解为 map 中的一个元素,用于存储一个键值对。 ...

    网龙实习生题目c++:STL的map和vector使用

    - 使用`map.insert(std::pair&lt;key_type, mapped_type&gt;(key, value))`或`map.emplace(key, value)`来插入一个键值对。 2. **查找元素**: - 使用`map.find(key)`来查找键为`key`的元素。 3. **删除元素**: - 使用...

    基于C++ map中key使用指针问题的详解

    C++实际开发的过程会经常使用...确定采用find方式查找数据后,我们需要考虑存储map的空间复杂度,对于基础数据类型的数据(int char等)这里就不做讨论。本文讨论的是map中存储的数据结构struct情况。1、如果map中的key

    C++上机编程测试纸质资料参考

    - `map&lt;key_type, value_type&gt;`:键值对容器,每个键是唯一的,键类型为`key_type`,值类型为`value_type`。 - **插入**: - `insert(pair&lt;key_type, value_type&gt;)`:插入一个键值对。 - `map[key] = value;`:...

    map和pair配合使用.docx

    Map 是一种关联容器,用于存储键值对(key-value pair),它可以根据键快速地查找对应的值。Map 的键是唯一的,每个键对应一个值。Map 的主要优点是能够快速地查找、插入和删除元素。 二、Pair 概念 Pair 是一种...

    map基本用法.docx

    map&lt;char, string&gt; mapChar; map, char&gt; mapIntChar; ``` 2. **添加数据**: 要向`map`中添加元素,可以使用`insert`函数或直接赋值。例如: ```cpp map, string&gt; mapLive; mapLive.insert(pair, string&gt;...

    matlab编程和数据类型函数.docx

    - **isKey**: 检查 Map 是否包含特定键。 - **keys**: 返回 Map 中的所有键。 - **length**: 返回 Map 的键数量。 - **remove**: 从 Map 中移除键值对。 - **size**: 获取 Map 的大小。 - **values**: 返回 ...

    STL(shipped with VC6) Questions &amp; Answers(四).docx

    当我们将一个指针,如`char*`,作为键(key)插入Map时,Map不会对原始指针进行任何管理,而是复制键和值。这意味着Map内部创建了键和值的副本,并不负责释放原始指针所指向的内存。因此,当你删除Map中的一个元素时...

    map头文件的一些用法.pdf

    pair&lt;map&lt;char, int&gt;::iterator, map&lt;char, int&gt;::iterator&gt; pRet; pRet = mymap.equal_range('a'); cout ; cout &lt;&lt; pRet.first-&gt;first &lt;&lt; "=&gt;" &lt;&lt; pRet.first-&gt;second ; cout &lt;&lt; pRet.second-&gt;first &lt;&lt; "=&gt;" ...

    贪吃蛇C++版(转)

    - `SnakeMove(HWND hWnd, CMap &map, CFood &food, WPARAM key)`:处理蛇的移动逻辑。 - `GetMoveSpeed(HWND hWnd)`:设置蛇移动的速度。 4. **`CPaint` 类的关键函数**: - 构造函数 `CPaint(char* bgBmp, char...

    无顺序 map c++ vs2010-vs2022都可以编译的 版本

    tsl::ordered_map&lt;char, int&gt; map = { {'d', 1}, {'a', 2}, {'g', 3} }; map.insert({ 'b', 4 }); map['h'] = 5; map['e'] = 6; map.unordered_erase('a'); // {d, 1} {g, 3} {b, 4} {h, 5} {e, 6} for ...

    Java面试资料,一套带走

    - **keySet遍历**:通过`Map.keySet()`获取key的Set,遍历键,然后通过键获取值。 - **foreach遍历**:利用增强for循环遍历`keySet`或`entrySet`。 - **Collection遍历**:如果需要获取值的集合,可以通过`Map....

    ORANGES'_自己动手写操作系统_光盘源代码.zip

    /*++++++++++++++++++++++++...extern struct dev_drv_map dd_map[]; /* for test only */ extern char * logbuf; extern const int LOGBUF_SIZE; extern char * logdiskbuf; extern const int LOGDISKBUF_SIZE;

    java集合类

    - Map接口存储键值对,常用方法有put(K key, V value)、get(K key)、remove(K key)等。 - HashMap通过哈希表实现,提供快速查找和插入,但不保证元素顺序。 - TreeMap基于红黑树,保持键的排序,可以按自然顺序或...

    深入了解C++中map用法

    在C++中,`std::map` 是一个关联容器,它提供了一种通过键(Key)来访问元素的方式。这个容器以红黑树(Red-Black Tree)为底层实现,保证了插入、删除和查找操作的高效性。下面将详细介绍`std::map`的用法及其特点...

Global site tag (gtag.js) - Google Analytics