東方算程譚

Oriental Code Talk ── επιστημηが与太をこく、弾幕とは無縁のシロモノ。

目次

Blog 利用状況

ニュース

著作とお薦めの品々は

著作とお薦めの品々は
東方熱帯林へ。

あわせて読みたい

わんくま

  1. 東京勉強会#2
    C++/CLI カクテル・レシピ
  2. 東京勉強会#3
    template vs. generics
  3. 大阪勉強会#6
    C++むかしばなし
  4. 東京勉強会#7
    C++むかしばなし
  5. 東京勉強会#8
    STL/CLRによるGeneric Programming
  6. TechEd 2007 @YOKOHAMA
    C++・C++/CLI・C# 適材適所
  7. 東京勉強会#14
    Making of BOF
  8. 東京勉強会#15
    状態遷移
  9. 名古屋勉強会#2
    WinUnit - お気楽お手軽UnitTest

CodeZine

  1. Cで実現する「ぷちオブジェクト指向」
  2. CUnitによるテスト駆動開発
  3. SQLiteで組み込みDB体験(2007年版)
  4. C++/CLIによるCライブラリの.NET化
  5. C# 1.1からC# 3.0まで~言語仕様の進化
  6. BoostでC++0xのライブラリ「TR1」を先取りしよう (1)
  7. BoostでC++0xのライブラリ「TR1」を先取りしよう (2)
  8. BoostでC++0xのライブラリ「TR1」を先取りしよう (3)
  9. BoostでC++0xのライブラリ「TR1」を先取りしよう (4)
  10. BoostでC++0xのライブラリ「TR1」を先取りしよう (5)
  11. C/C++に対応した、もうひとつのUnitTestFramework ─ WinUnit
  12. SQLiteで"おこづかいちょう"
  13. STL/CLRツアーガイド
  14. マージ・ソート : 巨大データのソート法
  15. ヒープソートのアルゴリズム
  16. C++0xの新機能「ラムダ式」を次期Visual Studioでいち早く試す
  17. .NETでマンデルブロ集合を描く
  18. .NETでマンデルブロ集合を描く(後日談)
  19. C++/CLI : とある文字列の相互変換(コンバージョン)
  20. インテルTBBによる選択ソートの高速化
  21. インテルTBB3.0 によるパイプライン処理
  22. Visual C++ 2010に追加されたSTLアルゴリズム
  23. Visual C++ 2010に追加されたSTLコンテナ「forward_list」
  24. shared_ptrによるObserverパターンの実装
  25. .NETでマンデルブロ集合を描く(番外編) ── OpenCLで超並列コンピューティング
  26. StateパターンでCSVを読む
  27. 状態遷移表からStateパターンを自動生成する
  28. 「ソートも、サーチも、あるんだよ」~標準C++ライブラリにみるアルゴリズムの面白さ
  29. インテルTBBの同期メカニズム
  30. なぜsetを使っちゃいけないの?
  31. WPFアプリケーションで腕試し ~C++でもWPFアプリを
  32. C++11 : スレッド・ライブラリひとめぐり
  33. Google製のC++ Unit Test Framework「Google Test」を使ってみる
  34. メールでデータベースを更新するココロミ
  35. Visitorパターンで遊んでみたよ
  36. Collection 2題:「WPFにバインドできる辞書」と「重複を許す検索set」
  37. Visual C++ 2012:stateless-lambdaとSQLiteのぷち拡張
  38. 「Visual C++ Compiler November 2012 CTP」で追加された6つの新機能

@IT

  1. Vista時代のVisual C++の流儀(前編)Vista到来。既存C/C++資産の.NET化を始めよう!
  2. Vista時代のVisual C++の流儀(中編)MFCから.NETへの実践的移行計画
  3. Vista時代のVisual C++の流儀(後編) STL/CLRによるDocument/Viewアーキテクチャ
  4. C++開発者のための単体テスト入門 第1回 C++開発者の皆さん。テスト、ちゃんとしていますか?
  5. C++開発者のための単体テスト入門 第2回 C++アプリケーションの効率的なテスト手法(CppUnit編)
  6. C++開発者のための単体テスト入門 第3回 C++アプリケーションの効率的なテスト手法(NUnit編)

AWARDS


Microsoft MVP
for Visual Developer - Visual C++


Wankuma MVP
for いぢわる C++


Nyantora MVP
for こくまろ中国茶

Xbox

Links

記事カテゴリ

書庫

日記カテゴリ

負けるもんか

ネタ元 → [C++] 選択ソート

#include <algorithm>

template<typename Iterator>  
void SelectionSort(Iterator first, Iterator last) {
  for ( ; first != last; ++first ) {
    std::iter_swap(first, std::min_element(first,last));
  }
}

// おためし
#include <iostream>

int main() {
  const int N = 10;
  int data[N] = { 1, 3, 5, 7, 9, 8, 6, 4, 2, 0 };
  SelectionSort(data, data+N);
  for ( int i = 0; i < N; ++i ) {
    std::cout << data[i] << ' ';
  }
}

...ごめんなさい、ズルしました。

投稿日時 : 2008年5月8日 9:01

コメントを追加

# re: 負けるもんか 2008/05/08 10:05 しゅんた

この程度のプログラムなら、何とか追っかけられました。
勉強になります。ありがとうございました。

# re: 負けるもんか 2008/05/08 12:46 通りすがり

template <class Iterator>
struct swapper {
Iterator first, last;
swapper(Iterator first, Iterator last)
: first(first), last(last) {}

void operator()(...)
{
std::iter_swap(first, std::min_element(first, last));
++first;
}
};

template <class Iterator>
void selection_sort(Iterator first, Iterator last)
{
std::for_each(first, last, swapper<Iterator>(first, last));
}

int main()
{
int data[] = { 1, 3, 5, 7, 9, 8, 6, 4, 2, 0 };
selection_sort(data, data + 10);
std::copy(data, data + 10, std::ostream_iterator<int>(std::cout, " "));
}

# re: 負けるもんか 2008/05/08 12:48 通りすがり

ループ?なにそれおいしいの?

# re: 負けるもんか 2008/05/08 13:40 επιστημη

> なにそれおいしいの?

おいしいよ♪
for_each も min_element もループでできてますから。

# re: 負けるもんか 2008/05/08 13:52 通りすがり

for_eachをループで実装しろなんて決まりはないわけで、別に再帰を使ってる実装があっても標準上は問題ないはずじゃない?

つか、ここではそういうことを言ってるんじゃないんですけど。
ライブラリ側とは分けて考えないと。

# re: 負けるもんか 2008/05/08 14:54 επιστημη

ではどういうことを言ってるんでしょうか?
「単純ループは再帰に置き換え可能」てこと?

# re: 負けるもんか 2008/05/08 15:09 ちょっと通りますよ

多分「C++に染まったプログラマはforループを書かない」という通説をネタにしているんだなーと思いました まる

# re: 負けるもんか 2008/05/08 15:22 επιστημη

そ、そげな通説があるですか?! 知らなんだー

# re: 負けるもんか 2008/05/08 15:38 通りすがり

http://www.23ch.info/test/read.cgi/tech/1192866305/
ここの940から読めばいいと思うよ。973あたりまで。

# re: 負けるもんか 2008/05/08 15:55 επιστημη

ざっくし読んだ。
...それで? って思った。
ココのコメントでどういうことを言ってるのか、
やっぱわかんなかった。

# re: 負けるもんか 2008/05/08 16:12 通りすがり

ハイ、そのURLはコメントとは直接関係してません。紛らわしくてごめんなさい。
結局何が言いたかったかって言うと、ちょっと通りますよさんとほとんど同じです。
ネタ元に対して、「負けるもんか」とSTLを使っているのに、for_eachやらcopyやら使わないのは片手落ちじゃ?
というか、「forループ使ったら負け」てるんじゃ?
と思ったわけです(で、上のURLを出したんだけど、これについてはダメダメですね)。

#ネタの説明ほどつらいもんはない

# re: 負けるもんか 2008/05/08 16:25 επιστημη

あー。
やるならテッテーテキにやれ、と。

# re: 負けるもんか 2008/05/08 16:40 επιστημη

template<typename Iterator>
void SelectionSort(Iterator first, Iterator last) {
 first != last ?
  (std::iter_swap(first, std::min_element(first,last)),
  SelectionSort(++first,last))
 : void(0);
}

...こんなんで勘弁してくだせぇ

# yvbDkJbvmcTz 2011/12/12 18:47 http://www.birthcontrolremedy.com/birth-control/cl

Yeah? I read and I understand that I do not understand anything what it is about:D

# PuyxLsIakURQE 2011/12/16 0:25 http://www.upscalegallery.com/

Read, of course, far from my topic. But still, we can work together. How do you feel about trust management?!...

タイトル
名前
URL
コメント