如何根据输入从数组中检索元素?

时间:2015-08-01 05:56:27

标签: c++ arrays parallel-arrays

我目前正在研究一个程序,我想知道是否还有从数组中输入一个元素并在并行数组的同一位置找到一个元素。

string names[3]={"Jim", "John", "Jeff"};
int num[3]={1,2,3};
cout<<"Enter either Jim, John, or Jeff"<<endl;
cin<<name;

如果我要输入名称'John',我将如何获得输出以打印出以下内容: '约翰有2号'

3 个答案:

答案 0 :(得分:2)

写一个循环

for (int i = 0 i < 3; ++i)
{
    if (name == names[i])
    {
      cout << name " has the number " << num[i] << "\n";
      break;
    }
}

答案 1 :(得分:2)

除非您确实需要使用并行数组,否则您可能需要考虑std::mapstd::unordered_map,这些问题专门针对此类问题而设计:

std::map<std::string, int> people{
    { "Jim", 1 },
    { "John", 2 },
    { "Jeff", 3 }
};

std::cout << "Please enter a name: ";
std::string name;
std::cin >> name;

auto pos = people.find(name);
if (pos != people.end())
    std::cout << name << " has the number: " << pos->second;

答案 2 :(得分:0)

C ++没有为数组提供,但您可以使用std::find库中的<algorithm>,它可以使用两个迭代器。

迭代器是指针的推广,你也可以使用指针使用该算法;这种方法的一个例子是:

string *s = std::find(names, names+3, name);
int index = s - names; // 0, 1 or 2; if not present it will be 3