2017-01-13 10 views
-2

こんにちは私は以下のようなコードを持っています。私は文字列がcinで入力した場合にユーザのユーザ名と一致するユーザのベクトル;オブジェクトのベクトル内のオブジェクトを見つける

#include<iostream> 
#include<vector> 
using namespace std; 
class User{ 

private: 

char *username; 
char *password; 
int age; 

public: 
User(){..} 
User(char *,char *p, int a){...} 
~User(){..}; 
friend ostream &operator<<(ostream &output, User &u) 
{ 
cout<<"User: "<<u.username<<endl; 
cout<<"Pass: "<<u.password<<Endl; 
} 
char* getUsername(){ return username}; 
char* getPassword(){return password}; 
}; 



template <class T> class Vector 
{ 
private: 
    T* vect; 
    int dim; 

public: 
    Vector() 
    { 
     dim = 0; 
     vect = NULL; 
    } 

    Vector(T*vect, int dim) 
    { 
     this->dim = dim; 
     this->vect = new T(this->dim); 
     for (int i = 0; i < this->dim; i++) 
      this->vect[i] = vect[i]; 
    } 

    Vector(Vector &v) 
    { 
     this->dim = v.dim; 
     this->vect = new T(this->dim); 
     for (int i = 0; i < this->dim; i) 
      this->vect[i] = v.vect[i]; 
    } 

    ~Vector() 
    { 
     if (vect != NULL) 
      delete[]vect; 
    } 

    void output_vect() 
    { 
     cout << "Elements are: " << endl; 
     for (int = 0; this->dim; i++) 
     { 
      cout << this->vect[i] << endl; 
      cout << endl; 
     } 
    } 

    void sort_vect() 
    { 
     T aux; 
     for (int i = 0; i<this->dim - 1; i++) 
      for (int j = i + 1; j<this->dim; j++) 
       if (this->vect[i] < this->vect[j]) 
       { 
        aux = this->vect[i]; 
        this->vect[i] = this->vect[j]; 
        this->vect[j] = aux; 
       } 
    } 

    Vector operator+(Vector &v) 
    { 
     Vector temp; 
     temp.dim = this->dim + v.dim; 
     temp.vect = new T[temp.dim]; 
     for (int i = 0; i < this->dim; i++) 
      temp.vect[i] = this->vect[i]; 
     for (int j = 0; j < v.dim; j++) 
      temp.vect[j + this->dim] = v.vect[j]; 
     return temp; 
    } 


void Search() 
{ 
    //i know this code isn't right in this function, but I really don't know much about templates and stuff; 


Vector<Userr> vectuser(users, 2); 


    string wanteduser; 
    cout << "Type the username you want to find:" << endl; 
    cin >> wanteduser; 

    vector<User>vstl; 


    if (find(vstl.begin(), vstl.end(), wanteduser)!= vstl.end()) 
     vstl.push_back(users[wanteduser]); 
} 

void main() 

{ 

User u1("John","34f",20); 
User u2("Kim","fdfg",18); 

    User users[2] = { u1,u2 }; 

    Vector<User> vectusers(users,2); 
Search(); 

} 

コードをSearch()関数で記述して処理を手伝ってもらえますか?たぶん私はこのようにもっと理解できるかもしれません。そして、私が授業で弦を使わない理由を言ってはいけません。これは私の大学が要求するものです(char)。 ありがとうございます。

+0

「検索」機能をどのように呼び出すべきかについて考えてみてください。 'void Search(void)'は実際には奇妙な署名です...カスタム 'Vector'実装を使用する場合、' #include 'の平均は何ですか? –

答えて

0

このような機能はどうですか?それはあなたが探したものですか?

bool searchUserByName(std::vector<User>& users, User& target, std::string name) { 
    for (std::vector<User>::iterator it = users.begin(); it != users.end(); it++) 
     if ((*it).getUsername() == name) { 
      target = *it; 
      return (true); 
     } 

    return (false); 
} 

カスタムSTLコンテナベクターではなく、デフォルトのSTLコンテナベクターを使用してください。リストが良いでしょう。 #include <list>

関連する問題