【问题标题】:Find coordinates of a char in a vector of strings (C++)在字符串向量中查找字符的坐标 (C++)
【发布时间】:2015-09-03 11:05:44
【问题描述】:

我正在用 C++ 编写一个简单的 ASCII Roguelike RPG,并且像往常一样使用 @ 字符来表示玩家。

我将关卡存储在 .txt 文件中,以便没有编程知识的人可以编辑和创建自己的关卡。

当我运行游戏时,我打开第一个关卡文件并将关卡逐行push_back放入一个字符串向量中。

我可以通过其坐标访问向量中的某个字符,例如:

char certainChar = levelData[3][3];

我要求最快的方法来做相反的事情:获取在向量中只出现一次的字符的坐标。

有什么建议吗?

【问题讨论】:

  • 您要搜索在 any 字符串中仅出现一次的特定字符或 any 字符?
  • 概括、概括、问谷歌并找到指向 SO 问题的链接。
  • 在整个字符串向量中仅出现一次的特定字符 (@)
  • @LogicStuff 我已经用谷歌搜索了它,但没有找到任何东西,这就是我来这里询问的原因。

标签: c++ string vector char coordinates


【解决方案1】:

这归结为在无序列表/数组中搜索。

对于每一行:对于这一行中的每个字符:这是所需的字符吗? -> 是 -> 记录索引并返回。

如果你的级别很小,这没关系。

更快的方法是将@坐标单独存储在您的关卡文件中,当然在程序执行期间跟踪它们。

【讨论】:

    【解决方案2】:

    试试这个功能

    std::pair<int, int> findCoordinates(std::vector<std::string> > & levelData) {
        for (unsigned int i = 0; i < levelData.size(); ++i) {
            std::size_t found = levelData[i].find('@');
            if (found != std::string::npos) return std::make_pair(i, found);
        }
        return std::pair<int, int>();
    }
    

    但是对于包含长字符串的大型向量,这可能会非常慢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多