std::map<char*, ULONGLONG>初始化
时间: 2024-01-20 15:04:21 浏览: 127
在使用`std::map进行初始化时,键类型为`char*`的情况需要特别注意。由于`char*`是指针类型,它们会被视为指针地址而不是字符串内容来进行比较。因此,在比较两个`char*`键时,实际上是在比较它们的地址,而不是字符串内容。
如果你想要按照字符串内容进行比较和排序,可以使用自定义的比较函数或使用`std::string`作为键类型。
以下是一个示例,展示了如何初始化一个`std::map<char*, ULONGLONG>`,其中使用自定义的比较函数来按照字符串内容进行排序:
```cpp
#include <map>
#include <string>
#include <iostream>
struct CompareCharPtr {
bool operator()(const char* str1, const char* str2) const {
return std::strcmp(str1, str2) < 0;
}
};
int main() {
std::map<char*, ULONGLONG, CompareCharPtr> myMap;
myMap["apple"] = 100;
myMap["banana"] = 200;
myMap["orange"] = 300;
// 遍历输出
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
在上面的示例中,我们通过自定义的比较函数`CompareCharPtr`来按照字符串内容进行比较。请注意,在使用指针作为键类型时,确保键的生命周期足够长,以避免悬空指针或访问已释放的内存。更安全的做法是使用`std::string`作为键类型,这样可以避免这些问题。
阅读全文