ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者の為のC++コミュのfind()の使い方がわかりません。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
struct A{
int a;
char b[40];
}

int main()
{
vector<A> v;
適当に構造体に値を入れて、いくつかの構造体をvectorに格納して、

char n[] = "jiro";
vector<A>::iterator ite = find(v.begin(), v.end(), n);

てな感じで、vectorにいくつかの構造体を格納して、それをcahr nで検索して、nの文字列が入ってる構造体を探すってのを作りたいのです。

なんですが、find()の使い方を間違ってるんだと思います。
どうしたらいいんでしょうか?

コメント(2)

 テンプレートとポインタはしっかり勉強しましたか?
findはテンプレートが展開されて恐らく
//引数省略。型のみ
find(vector<A>::iterator,vector<A>::iterator,char[]);
という形になっています。
通常整数などの配列を与えた場合findは
find(int begin[],int end[],int value);
という形になり。
for(unsigned int =0;begin != end;begin++,i++) if(*begin == value) return i;
というような処理を行うのですが、のぶCさんのように構造体を代入しても*begin == valueのような比較演算子が定義されていませんからコンパイルできません。更に、比較対象(第3引数)はポインタ同士の比較になりますので配列は渡せません。
あっ 
だから無理なんですね。
わかりました!!
ありがとうございます!

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者の為のC++ 更新情報

初心者の為のC++のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。