我目前正在开发一个程序,我想知道是否可以从数组中输入一个元素并在并行数组的同一位置找到一个元素。
string names[3]={"Jim", "John", "Jeff"};
int num[3]={1,2,3};
cout<<"Enter either Jim, John, or Jeff"<<endl;
cin<<name;
如果我要输入名称“约翰”,我将如何让输出打印出类似以下内容的内容:“约翰有数字 2”
我目前正在开发一个程序,我想知道是否可以从数组中输入一个元素并在并行数组的同一位置找到一个元素。
string names[3]={"Jim", "John", "Jeff"};
int num[3]={1,2,3};
cout<<"Enter either Jim, John, or Jeff"<<endl;
cin<<name;
如果我要输入名称“约翰”,我将如何让输出打印出类似以下内容的内容:“约翰有数字 2”
写一个循环
for (int i = 0 i < 3; ++i)
{
if (name == names[i])
{
cout << name " has the number " << num[i] << "\n";
break;
}
}
除非您确实需要使用并行数组,否则您可能需要考虑std::map
or std::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;
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