Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在地图中按矢量搜索关键字_C++_Dictionary_Vector_Visual Studio 2015 - Fatal编程技术网

C++ 在地图中按矢量搜索关键字

C++ 在地图中按矢量搜索关键字,c++,dictionary,vector,visual-studio-2015,C++,Dictionary,Vector,Visual Studio 2015,因此,我们有一个学校项目,创建一个电话簿,在那里你可以通过搜索姓名来查找电话号码。我决定使用一个地图,用一个字符串表示电话号码,用一个字符串向量表示姓名,因为关联号码应该可以有多个姓名 然而,由于我们从Python直接跳到C++,没有任何语法或语言的解释,我很难想出一个通过查找名字来查找数字的方法。 我正在使用的类如下所示 class Telefonbok { public: void add(string namn, string nummer) {

因此,我们有一个学校项目,创建一个电话簿,在那里你可以通过搜索姓名来查找电话号码。我决定使用一个地图,用一个字符串表示电话号码,用一个字符串向量表示姓名,因为关联号码应该可以有多个姓名

然而,由于我们从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;
};
classtelefonbok
{
公众:
void add(字符串namn、字符串numer)
{
迭代器it=boken.find(numer);
如果(it!=boken.end())
{

Algirdas是正确的,你应该阅读C++。< /P> 假设您正在将名称映射到一个或多个数字,但每个名称仅映射一个数字

#include <cstddef>
#include <iostream>
#include <map>
#include <string>
#include <vector>

using std::cout;
using std::endl;
using std::map;
using std::string;
using std::vector;

class Telefonbok
{
public:
  void add(string namn, string nummer) {
    auto it = nummer_namn.find(nummer);
    if (it != nummer_namn.end()) {
      cout << "This number already exists, please choose another" << endl;
    }
    else {
      nummer_namn[nummer] = namn;
      namn_nummer[namn].push_back(nummer);
    }
  }

  void lookup(string name) {
    auto it = namn_nummer.find(name);
    if (it == namn_nummer.end()) {
      cout << "Unable to find any numbers for " << name << ", sorry." << endl;
      return;
    }

    for (auto const& sokning : it->second)
      cout << name << " : " << sokning << endl;
  }
private:
  map<string, vector<string>> namn_nummer;
  map<string, string> nummer_namn;
};

int main() {
  Telefonbok bok;
  bok.add("Eljay", "789");
  bok.add("Eljay", "456");
  bok.add("Beaker", "123");

  bok.lookup("Eljay");
  bok.lookup("Beaker");
  bok.lookup("Bunsen Honeydew");

  return EXIT_SUCCESS;
}
#包括
#包括
#包括
#包括
#包括
使用std::cout;
使用std::endl;
使用std::map;
使用std::string;
使用std::vector;
Telefonbok类
{
公众:
void add(字符串namn、字符串numer){
自动it=nummer\u namn.find(nummer);
如果(it!=numer\u namn.end()){

然而,由于我们从Python直接跳转到C++,没有任何语法或语言的解释,“那么,请考虑阅读A。难道你不需要映射另一个方法,从名字到数字吗?你的添加方法是错误的:你可能只需要<代码> BoKe[NuMM]。
。您可能也不想让
namn_别名
nummer
作为
Telefonbok
的成员
namn_别名
应该位于
add
中的else分支的本地,或者@Jarod42建议不存在。
nummer
成员被
中的参数
nummer
隐藏但是,主要问题是每个数字应该有多个名字的可能性。我希望我有时间阅读C++,但是我们必须把我们在Python中所做的一切转录下来(大约3个月的工作)。在两周内,C++结束了。这是最后一次,但只剩下三天。我的例子支持每个名字都有多个数字。对于每一个数字,都不难修改,因为每个数字都有多个名字。我认为StActFoIP通常不明确给出家庭作业问题的答案……但是既然你提供了一个NE。非常完整的代码片段,并且C++语言有着可以理解的困难,我希望我的代码示例能帮助你完成你的问题。(我认为Python使你更为学习更温和的语言,而不是C++。)我明白了。我会进一步研究并希望能更好地理解它。非常感谢你的帮助!