2

什么是地图?我将如何在 C++ 中创建和使用一个?

4

3 回答 3

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;
于 2009-06-22T13:14:17.093 回答
0

什么是地图 - 它是一种包含成对相关值的数据结构。每对由一个键和一个值组成。映射中的每个键都必须是唯一的,但不同的键可以具有相同的值。映射通常用于缓存或实现查找表,就像字典(实际上在某些语言中称为映射)。

至于如何在 C++ 中实现地图,简短的回答是 - 你没有。您使用 std::map 或其变体之一。

于 2009-06-22T13:17:54.697 回答
0

Map 是集合类型,它在 STL(标准模板库)中用 C++ 实现,这里是库文档中的官方解释。

Map 是一个排序关联容器,它将 Key 类型的对象与 Data 类型的对象相关联。Map是一个Pair Associative Container,意味着它的值类型是pair。它也是一个唯一关联容器,这意味着没有两个元素具有相同的键。Map 有一个重要的属性,即在 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;
}

是 STL 中 Map 类型的完整文档。

我希望这会有所帮助。

于 2009-06-22T13:18:50.390 回答