【发布时间】:2017-11-14 13:56:47
【问题描述】:
因此,我们有一个学校项目来创建电话簿,您应该可以在其中通过搜索姓名来查找电话号码。我决定使用带有字符串的电话号码和名称的字符串向量的地图,因为关联的号码应该能够在其中包含多个名称。
但是,由于我们直接从 Python 跳到 C++,没有任何语法或语言解释,我很难想出一种通过搜索名称来查找数字的方法。
我使用的类是这样的
class Telefonbok
{
public:
void add(string namn, string nummer)
{
map<string, vector<string>>::iterator it = boken.find(nummer);
if (it != boken.end())
{
cout << "This number already exists, please choose another";
}
else
{
namn_alias.push_back(namn);
boken[nummer] = namn_alias;
}
}
void lookup(string name)
{
for (map<string, vector<string>>::iterator sokning = boken.begin(); sokning != boken.end(); sokning++)
cout << "Hello!";
}
private:
vector<string> namn_alias;
string nummer;
map<string, vector<string>> boken;
};
我在查找函数中尝试做的是通过向量中的名称搜索电话号码,但我对如何继续在 for 循环内查看向量感到困惑。
计划是逐个遍历 Map 键以找到包含搜索名称的向量。关于如何继续的任何提示或我错过的一些可用于此的功能?
【问题讨论】:
-
"但是,由于我们直接从 Python 跳转到 C++,没有任何语法或语言的解释" 那么,请考虑阅读 good C++ book。
-
您不需要从名称到数字的其他方式映射吗?
-
你的 add 方法不对:你可能只需要
boken[nummer].push_back(namn);。 -
您可能也不想让
namn_alias或nummer成为Telefonbok的成员。namn_alias应该是add中 else 分支的本地,或者 @Jarod42 建议不存在。 成员nummer被add中的参数nummer隐藏,并且没有在其他地方使用
标签: c++ dictionary vector visual-studio-2015