C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 構造体を検索


(過去ログ 54 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■30527 / inTopicNo.1)  構造体を検索
  
□投稿者/ のり (10回)-(2008/12/25(Thu) 19:19:46)

分類:[C/C++] 

OS:WindowsXP
言語:Visual C++ 2003

よろしくお願いします。

構造体について教えてください。
構造体でキー検索のような事ってできるのでしょうか?
例えば

struct AAA
{
int age;
char *name;
};

void main()
{
vector<AAA> a;
AAA b;

〜aにデータを追加する処理(ループ)〜

  b = {20,"あかね"};
a.push_back(b);

 〜〜〜〜〜〜〜〜〜〜〜〜〜

  ”aの中で年齢が●●才の人をすべて表示”
}

といった感じを実現したいです。
aには年齢と氏名の情報が複数件入っているとして、「●●才の人」のようなキー検索っぽいことって実現可能なのでしょうか?
引用返信 編集キー/
■30528 / inTopicNo.2)  Re[1]: 構造体を検索
□投稿者/ のり (11回)-(2008/12/25(Thu) 19:31:01)
すいません、例文おかしいですね。

  b = {20,"あかね"};
  a.push_back(b);

  b.age = 20;
b.name = "あかね";
  a.push_back(b);
です。

可能であれば実現の方法も合わせて教えていただければと思います。
引用返信 編集キー/
■30529 / inTopicNo.3)  Re[2]: 構造体を検索
□投稿者/ あんどちん (35回)-(2008/12/25(Thu) 19:41:49)
No30528 (のり さん) に返信

for文でa.beginからa.endまで回してageが20の要素を探すのではダメでしょうか?

引用返信 編集キー/
■30543 / inTopicNo.4)  Re[3]: 構造体を検索
□投稿者/ あんどちん (36回)-(2008/12/26(Fri) 00:22:35)
No30529 (あんどちん さん) に返信
> ■No30528 (のり さん) に返信
>
> for文でa.beginからa.endまで回してageが20の要素を探すのではダメでしょうか?
>
検索対象年齢が20とは書いてなかったですね^^;

引用返信 編集キー/
■30552 / inTopicNo.5)  Re[1]: 構造体を検索
□投稿者/ επιστημη (1481回)-(2008/12/26(Fri) 08:49:40)
επιστημη さんの Web サイト
2008/12/26(Fri) 10:31:06 編集(投稿者)
> 「●●才の人」のようなキー検索っぽいことって実現可能なのでしょうか?

えと、所望する条件を満たせばtrueを返す関数を用意し、
「こいつがtrueを返す要素を列挙せよ!」って言いたいのかしら。

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

using namespace std;

struct AAA {
  int age;
  char* name;
};

ostream& operator<<(ostream& stream, const AAA& a) {
  return stream << '(' << a.name << ',' << a.age << ')';
}

// 所望する条件を満たせばtrueを返す関数
bool age5(const AAA& a) {
  return a.age == 5;
}

int main() {
  vector<AAA> a;
  AAA b;
  b.age = 1; b.name = "みづき";     a.push_back(b);
  b.age = 5; b.name = "シュウたん"; a.push_back(b);
  b.age = 5; b.name = "マグさん";   a.push_back(b);

  for ( vector<AAA>::iterator position = a.begin();
        (position = find_if(position, a.end(), &age5)) != a.end(); // ココで検索
        ++position ) {
    cout << *position << endl;
  }

}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -