繁体   English   中英

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

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

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

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

当我运行游戏,我打开第一级文件和通过的push_back线水平线成字符串的向量。

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

char certainChar = levelData[3][3];

我要求以最快的方式进行相反的操作:获取仅在向量中出现一次的字符的坐标。

有什么建议?

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

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

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

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

尝试使用此功能

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM