-4

int 値と vector 値を比較できますか?

ユーザーが no を入力したかどうかを検索しようとしています。ベクトル ID が no と一致します

int no;
cout << "Input a no";
cin >> no;    

for (int n=0;vector.size();n++){

if(no==vector[n].getID()){

...

}

}
4

2 に答える 2

2

C++11 では、ラムダ関数を使用find_ifして、次のように一致する ID を検出できます。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;

struct user {
    int userid;
    string name;
    user(int id, string n) : userid(id), name(n) {}
};

int main() {
    vector<user> v;
    v.push_back(user(1, "quick"));
    v.push_back(user(2, "brown"));
    v.push_back(user(3, "fox"));
    v.push_back(user(4, "jumps"));
    auto needId = 3;
    // Here is the part that replaces the loop in your example:
    auto res = find_if(v.begin(), v.end(), [needId](user const& u) {
        return u.userid == needId;
    });
    // res is an interator pointing to the item that you search.
    if (res != v.end()) {
        cout << res->name << endl;
    }
    return 0;
}

予想通り、これは印刷されますfoxideoneへのリンク)。

于 2013-01-28T17:31:40.120 に答える
-1

まず第一に、私はそうではないと推測しています。あなたは数を意味します。したがって、cin で何が起こるかというと、文字列が得られます。次に、これを int に変換して vector と比較する必要があります。これは、あなたが使用していると思われるものです。次に、noAsNumber を vector[i] 値と比較します。

string no;
int noAsNumber = atoi(no.c_str());

int i;
for (i = 0; i < vector.size(); i++)
{
    ...
}
于 2013-01-28T17:22:49.223 に答える