首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >地图中按向量搜索密钥

地图中按向量搜索密钥
EN

Stack Overflow用户
提问于 2017-11-14 13:56:47
回答 1查看 68关注 0票数 0

因此,我们有一个学校项目,在创建电话簿时,您应该能够通过搜索名称来查找电话号码。我决定用一个带有字符串的映射作为电话号码,用字符串的向量表示名称,适当的关联号应该能够有多个名称。

但是,由于我们直接从Python跳到C++,而没有对语法或语言做任何解释,所以我很难找到通过搜索名称来查找数字的方法。

我使用的类如下所示

代码语言:javascript
复制
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键,以找到包含搜索到的名称的向量。关于如何进行或一些我错过的函数的提示,可以用于此吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 14:22:09

Algirdas是正确的,你应该在C++上阅读。

假设你把名字映射成一个或多个数字,但每个名字只有一个数字.

代码语言:javascript
复制
#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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47287653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档