【发布时间】:2012-11-06 09:20:59
【问题描述】:
我有一个自定义类“团队”,它的属性之一是它的“名称”。创建每个“团队”后,我将其添加到矢量团队列表中。
我想实现一个功能,该功能会不断提示用户输入尚未被 teamList 中的团队使用的团队名称。我有以下代码:
while (true) {
string newString;
bool flag = true;
getline(cin, newString);
for (int i = 0; i < teamList.size(); i++) {
if (teamList[i].name.compare(newString) == 0) flag = false;
}
if (flag == true) {
return newString;
} else {
cout << "name already taken." << endl;
}
}
但是,这段代码真的很丑;有没有更好的检查方法?另外,一个更普遍的问题——面对丑陋的代码问题(比如这个),我可以采取哪些步骤来找到一个新的、更干净的实现?谢谢。
【问题讨论】:
-
查看find。
-
set(以及扩展,find)的问题在于它包含我正在使用的所有通用“结构”——而不是名称列表。因此,我需要找到一种方法将用户的字符串与每个 player.name 进行比较
-
@MichaelHang 这听起来没什么问题。你关心容器内物品的顺序吗?