STL 演習

元データ

プログラムは、1つだけとする。(随時拡張する。但し、各段階ごとにメールを送って下さい。)

  • 元データをファイル data.txt に保存すること。
  • main.cpp の関数 ReadFile を完成させること。
  • 以下のように最大、最小を求める。
    Max Height 184 Weight 83 Shoe 290
    Min Height 153 Weight 42 Shoe 220
    
    max_element,min_element 及び以下の関数オブジェクトを使用する。
    struct FCompHeight {
      bool operator()(const CPerson& i,const CPerson& j)const{
        return i.m_height < j.m_height;
      }
    };
    struct FCompWeight {
      bool operator()(const CPerson& i,const CPerson& j)const{
        return i.m_weight < j.m_weight;
      }
    };
    struct FCompShoe {
      bool operator()(const CPerson& i,const CPerson& j)const{
        return i.m_shoe < j.m_shoe;
      }
    };
  • k を入力させ、背の低い方から k 番目の人の身長を出力。nth_element を使用する。
  • 以下のように身長、体重の順に出力。
    女 153 43 220 女 154 42 230 女 157 45 230 女 157 52 230 女 158 45 230
    女 158 45 230 男 159 53 245 女 160 45 225 女 162 44 240 女 165 48 245
    男 165 55 255 男 165 55 255 女 168 50 240 女 168 53 235 男 168 57 260
    男 168 65 255 男 168 65 260 男 168 65 255 男 168 65 265 男 169 57 250
    男 169 69 260 男 169 69 260 女 170 48 235 男 170 65 260 男 171 58 255
    男 172 63 270 男 172 63 270 男 172 66 260 男 173 66 280 男 173 68 260
    男 173 73 265 男 175 69 275 男 175 70 270 男 176 65 265 男 176 68 270
    男 177 69 265 男 177 71 270 男 180 70 280 男 180 70 280 男 182 83 275
    男 184 75 290
  • 以下のように身長ごとの人数を出力。(CHeightMap を使用すること)
    153: 1 154: 1 157: 2 158: 2 159: 1 160: 1 162: 1 165: 3 168: 7 169: 3
    170: 2 171: 1 172: 3 173: 3 175: 2 176: 2 177: 2 180: 2 182: 1 184: 1
    
  • 男だけ、女だけについても上記の出力を行う。partition を使用すること。
  • 関数 main の変数 data の型を vector<CPerson> から list<CPerson> に変更する。
    sort する部分は、ダミーの vector を用意する。list から vector を作成するには、 copy と back_inserter が使用できる。
解答例

斉藤のホームページ