在字符串向量中查找char的坐标(c++)

Find coordinates of a char in a vector of strings (C++)

本文关键字:坐标 c++ char 字符串 向量 查找      更新时间:2023-10-16

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

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

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

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

char certainChar = levelData[3][3];

我要求最快的方法来做相反的:得到一个字符的坐标,只出现在向量中一次。

有什么建议吗?

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

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

如果你的水平很低,这是OK的。

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

尝试使用这个函数

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>();
}

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