在字符串向量中查找字符的坐标 (C++)
Find coordinates of a char in a vector of strings (C++)
我正在用 C++ 编写一个简单的 ASCII Roguelike RPG,我像往常一样使用 @ 字符代表玩家。
我将关卡存储在 .txt 文件中,这样没有编程知识的人也可以编辑和创建自己的关卡。
当我 运行 游戏时,我打开第一个关卡文件,然后 push_back 逐行将关卡转换为字符串向量。
我可以通过其坐标访问向量中的某个字符,例如:
char certainChar = levelData[3][3];
我要求以最快的方式进行反向操作:获取在向量中只出现一次的字符的坐标。
有什么建议吗?
归结为无序搜索 list/array。
对于每一行:对于该行中的每个字符:这是所需的字符吗? -> 是 -> 记录索引和 return.
如果你的水平很小,这没关系。
一种更快的方法是将@坐标单独存储在您的关卡文件中,当然在程序执行期间跟踪它们。
尝试使用此功能
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>();
}
但是对于包含长字符串的大型向量来说,这可能会非常慢。
我正在用 C++ 编写一个简单的 ASCII Roguelike RPG,我像往常一样使用 @ 字符代表玩家。
我将关卡存储在 .txt 文件中,这样没有编程知识的人也可以编辑和创建自己的关卡。
当我 运行 游戏时,我打开第一个关卡文件,然后 push_back 逐行将关卡转换为字符串向量。
我可以通过其坐标访问向量中的某个字符,例如:
char certainChar = levelData[3][3];
我要求以最快的方式进行反向操作:获取在向量中只出现一次的字符的坐标。
有什么建议吗?
归结为无序搜索 list/array。
对于每一行:对于该行中的每个字符:这是所需的字符吗? -> 是 -> 记录索引和 return.
如果你的水平很小,这没关系。
一种更快的方法是将@坐标单独存储在您的关卡文件中,当然在程序执行期间跟踪它们。
尝试使用此功能
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>();
}
但是对于包含长字符串的大型向量来说,这可能会非常慢。