【问题标题】:Index strings by other strings按其他字符串索引字符串
【发布时间】:2010-04-05 11:24:38
【问题描述】:

我需要用其他字符串索引特定字符串,但我真的找不到这样做的好方法。我尝试使用 tr1::unordered_map,但我在使用它时遇到了一些困难。 如果有人能告诉我最好的方法是什么,我将非常感激:) 我还需要用数字来索引对象(数字不是按顺序排列的,所以我不能使用向量)

【问题讨论】:

  • 某种地图是正确的方法 - 你有什么困难?如果你需要以两种方式建立索引,你可能需要两个容器。
  • @Mark 帽子和它有什么关系?

标签: c++ string indexing tr1 unordered-map


【解决方案1】:

std::map 呢?

std::map<std::string, std::string> foo;

然后就可以添加元素了,

foo["bar"] = "baz";
cout << foo["bar"] << std::endl;  // baz

【讨论】:

  • 我正在尝试使用这个:std::map<:string std::string> lang; std::string fMatch(matches[2].first,matches[2].second); std::string sMatch(matches[6].first,matches[6].second); lang[fMatch] = sMatch;但我收到此错误:错误 C2679: binary '[' : no operator found 它采用'std::string' 类型的右手操作数(或没有可接受的转换)
  • 你能在你的问题中发布一个最小的测试用例以及编译器输出吗?这段代码看起来很合理。
  • 第一个标题:pastebin.com/1M6p55fG,第二个标题:pastebin.com/e74mpFwj,代码文件:pastebin.com/rMbyBdbU,输出:pastebin.com/wy57wMjC
  • @mcco:您有两个名为 lang 的变量。一个是LocalCacheLoader 类的成员,另一个是函数loadLang 中的局部变量。在您的函数中,正在访问字符串类型的局部变量。由于std::string 没有接受字符串的 operator[],因此您会收到错误消息。
  • 哇!我讨厌这种情况发生:\感谢大家的帮助:D
猜你喜欢
  • 1970-01-01
  • 2014-07-02
  • 1970-01-01
  • 2012-06-29
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 1970-01-01
相关资源
最近更新 更多