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

时间:2015-09-03 11:05:45

标签: c++ string vector char coordinates

我正在使用C ++编写一个简单的ASCII Roguelike RPG,我正常使用@字符代表播放器。

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

当我运行游戏时,我会逐行打开第一级文件和 push_back 级别的字符串向量。

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

char certainChar = levelData[3][3];

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

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

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

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

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

更快捷的方法是将@ -coordinates分别存储在您的关卡文件中,当然也可以在程序执行期间跟踪它们。

答案 1 :(得分:1)

尝试使用此功能

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

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