0

私は現在プログラムに取り組んでおり、配列から要素を入力して、並列配列の同じ場所にある要素を見つける方法があるかどうか疑問に思っていました。

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

「John」という名前を入力した場合、「John has the number 2」という行に沿って何かを出力するにはどうすればよいでしょうか。

4

3 に答える 3

2

本当に並列配列を使用する必要がない限り、まさにこの種の問題のために設計されたstd::mapまたはを検討することをお勧めします。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;
于 2015-08-01T06:08:30.173 に答える
2

ループを書く

for (int i = 0 i < 3; ++i)
{
    if (name == names[i])
    {
      cout << name " has the number " << num[i] << "\n";
      break;
    }
}
于 2015-08-01T06:01:30.950 に答える
0

C++ は配列に対してそれを提供しませんが、2 つの反復子を使用して機能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
于 2015-08-01T06:02:45.037 に答える