並べ替えの STLアルゴリズム 解答ページ | Programming Place Plus C++編【標準ライブラリ】 第22章

トップページC++編

C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。

問題① 🔗

問題① std::list に対して partial_sort関数を適用できませんし、std::list に同じことを行うメンバ関数もありません。この解決のために、いったん、std::vector に要素をコピーし、アルゴリズムの適用後に書き戻す方法があります。この方法で実装してみてください。


たとえば、以下のようなプログラムになるでしょう。

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

namespace {
    void Println(int elem)
    {
        std::cout << elem << std::endl;
    }
}

int main()
{
    std::list<int> lst;
    lst.push_back(3);
    lst.push_back(2);
    lst.push_back(4);
    lst.push_back(0);
    lst.push_back(1);

    std::vector<int> v(lst.begin(), lst.end());
    std::partial_sort(v.begin(), v.begin() + 2, v.end());

    lst.clear();
    lst.assign(v.begin(), v.end());

    std::for_each(lst.begin(), lst.end(), Println);
}

実行結果:

0
1
4
3
2


参考リンク 🔗


更新履歴 🔗

 新規作成。



第22章のメインページへ

C++編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る