【问题标题】:vector<string> or vector< vector<char> >?矢量<字符串> 或矢量< 矢量<字符> >?
【发布时间】:2012-05-16 12:19:37
【问题描述】:

我正在开发一个Boggle 游戏求解器,它可以读取文本文件(棋盘)的行。

如果我应该使用strings 的vectorchars 的vector 矩阵,我一直在反复考虑。我认为charsvector 会更容易访问,因为myvec[y][x]vector 需要我使用strings 的string.at() 函数。

我不知道如果我应该将每一行解析到chars 或将行保留为string 并根据需要访问每个char,哪个会有更好的性能。关于我应该做哪一个的任何建议?解释为什么会很有帮助。

【问题讨论】:

  • 您也可以将[] 与字符串一起使用。 at 提供越界检查。
  • @chris Oh 从来没有用字符串尝试过。好吧,这几乎解决了我的问题,因为字符串向量会更容易。谢谢。
  • 字符串比字符数组好得多。如果可以,请始终选择它们。如您所知,语法可以通过字符串类重载operator[]
  • @chris:虽然这通常是个好建议,但为什么对于 Boggle 游戏而不是(基本上)二维数组 char 更好?您不太可能将一行视为string
  • @Johnsyweb,哎呀,我错过了令人难以置信的部分!事实上,字符数组对于这样的事情肯定会更好。那里的问题标题有点误导。如果字符序列具有某种意义,则应始终选择字符串。

标签: c++ matrix vector boggle


【解决方案1】:

正如评论,您可以在字符串上使用operator[],就像vectors 或数组一样。

在适当的优化下,vector&lt;char&gt; 的性能与string 的性能大致相同 - 两者都是底层数组,在这两种情况下,operator[] 将有效地成为结构成员访问和间接查找。他们甚至提供了几乎是methodssame set

选择使您的代码更易读/更简单的那个。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-08
    • 2012-09-24
    • 2017-05-23
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    相关资源
    最近更新 更多