什么是地图?我如何在C ++中创建和使用它?
答案 0 :(得分:3)
如果您的意思是std::map
,则会存储值对。在每对中,第一个值称为键,可用于快速查找关联的其他值。
你可以写:
std::map<std::string, int> ages;
ages["Fred"] = 52;
ages["Sue"] = 31;
std::cout << "Fred's age is " << ages["Fred"] << std::endl;
答案 1 :(得分:0)
什么是地图 - 它是一个包含相关值对的数据结构。每对由一个键和一个值组成。地图中的每个键都必须是唯一的,但不同的键可以具有相同的值。地图通常用于缓存或实现查找表,非常类似于字典(实际上是在某些语言中调用的地图)。
至于如何用c ++实现地图,简短的回答是 - 你没有。您使用std :: map或其中一个变体。
答案 2 :(得分:0)
Map是集合类型的结尾它是在STL(标准模板库)中用C ++实现的,这里是来自库文档的官方解释。
Map是一个Sorted Associative Container,它将Key类型的对象与Data类型的对象相关联。 Map是一个Pair Associative Container,意味着它的值类型是pair。它也是一个唯一的关联容器,意味着没有两个元素具有相同的键。 Map具有重要的属性,即将新元素插入到映射中不会使指向现有元素的迭代器无效。从地图中删除元素也不会使任何迭代器无效,当然,除了实际指向正在被删除的元素的迭代器之外。
实施例
struct ltstr
{
bool operator()(const char* s1, const char* s2) const
{
return strcmp(s1, s2) < 0;
}
};
int main()
{
map<const char*, int, ltstr> months;
months["january"] = 31;
months["february"] = 28;
months["march"] = 31;
months["april"] = 30;
months["may"] = 31;
months["june"] = 30;
months["july"] = 31;
months["august"] = 31;
months["september"] = 30;
months["october"] = 31;
months["november"] = 30;
months["december"] = 31;
cout << "june -> " << months["june"] << endl;
map<const char*, int, ltstr>::iterator cur = months.find("june");
map<const char*, int, ltstr>::iterator prev = cur;
map<const char*, int, ltstr>::iterator next = cur;
++next;
--prev;
cout << "Previous (in alphabetical order) is " << (*prev).first << endl;
cout << "Next (in alphabetical order) is " << (*next).first << endl;
}
Here是STL中Map类型的完整文档。
我希望这有帮助。