如何实现std::string getUniqueName(const std::string&name, std::vector<std::string>& names, int d );,请用c++实现
时间: 2023-11-16 07:05:07 浏览: 81
以下是一个可能的实现:
```cpp
#include <string>
#include <vector>
#include <unordered_set>
std::string getUniqueName(const std::string& name, std::vector<std::string>& names, int d)
{
std::unordered_set<std::string> usedNames;
for (const auto& n : names) {
usedNames.insert(n);
}
std::string uniqueName = name;
for (int i = 0; i < d; ++i) {
if (usedNames.find(uniqueName) == usedNames.end()) {
names.push_back(uniqueName);
return uniqueName;
}
uniqueName = name + std::to_string(i);
}
names.push_back(uniqueName);
return uniqueName;
}
```
这个函数会在 `names` 中查找是否已经存在名字为 `name` 或以 `name` 为前缀加数字后缀的字符串,如果不存在就返回 `name` 或者以 `name` 为前缀加数字后缀的字符串,并将新名字保存到 `names` 中。`d` 参数表示数字后缀的最大值,例如 `d=3` 表示数字后缀最大为 3。如果所有可能的名字都已经被占用,函数会返回以 `name` 为前缀加数字后缀的字符串,并将新名字保存到 `names` 中。
阅读全文