vector<string>还是vector<vector<char>>?

3

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

我一直在思考是应该使用string向量还是char向量矩阵。我认为char向量矩阵更容易访问,因为可以使用myvec[y][x]来访问,而string向量需要使用string.at()函数进行访问。

我不知道如果将每行解析为char或保留为string并根据需要访问每个char哪个性能更好。您有没有任何建议?请给出解释。


4
你也可以在字符串中使用 []at 提供越界检查。 - chris
@chris 哦,从未尝试过用字符串。好吧,既然使用字符串向量会更容易,那么这基本上解决了我的问题。谢谢。 - krizzo
2
字符串比字符数组好得多。如果可以的话,总是选择它们。只要你知道,语法是通过字符串类重载operator[]实现的。 - chris
@LF4:我能给出的最好建议就是开始使用其中一种编码。如果你遇到问题(性能、可读性、可维护性等),那么再考虑切换。 - johnsyweb
1
@Johnsyweb,糟糕,我错过了Boggle部分!对于这样的事情,字符数组确实更好。问题标题有点误导人。如果字符序列具有某种含义,则应始终选择字符串。 - chris
显示剩余2条评论
1个回答

4

如评论所述,您可以像使用 vector 或数组一样在字符串上使用 operator[]

在适当的优化下,vector<char> 的性能与 string 相当 - 它们都是底层的数组,在这两种情况下,operator[] 将有效地成为一个结构成员访问和间接查找。它们甚至提供了几乎相同的same set methods

选择使您的代码更可读/简单的任何方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接