<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JugglerShu.Net &#187; C++</title>
	<atom:link href="http://programming.jugglershu.net/wp/?cat=10&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://programming.jugglershu.net/wp</link>
	<description>Nothing But Programming</description>
	<lastBuildDate>Wed, 15 Apr 2020 08:11:15 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>HeapSort (C++ Template関数実装)</title>
		<link>http://programming.jugglershu.net/wp/?p=550</link>
		<comments>http://programming.jugglershu.net/wp/?p=550#comments</comments>
		<pubDate>Tue, 16 Aug 2011 16:42:00 +0000</pubDate>
		<dc:creator><![CDATA[shu]]></dc:creator>
				<category><![CDATA[Algorithm]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[HeapSort]]></category>

		<guid isPermaLink="false">http://programming.jugglershu.net/wp/?p=550</guid>
		<description><![CDATA[久しぶりに、プログラミング。今日はいままで自分で書いたことなかったヒープソート。 &#60;code&#62; &#60;br&#62;#ifndef __HEAPSORT_H__ &#60;br&#62;#define __HEAPSORT_H__ &#60;br&#62;&#60;br&#62;template &#60;typename t&#62;&#60;br&#62;void MaxHeapify( T* tar <a class="more-link" href="http://programming.jugglershu.net/wp/?p=550">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>久しぶりに、プログラミング。<br />今日はいままで自分で書いたことなかったヒープソート。</p>
<pre>&lt;code&gt;
&lt;br&gt;#ifndef __HEAPSORT_H__
&lt;br&gt;#define __HEAPSORT_H__
&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void MaxHeapify( T* target, unsigned int index , unsigned int length) {
&lt;br&gt;	unsigned int l = index	unsigned int r = (index	unsigned int max = index;
&lt;br&gt;	if( l 		max = l;
&lt;br&gt;	}
&lt;br&gt;	if( r 		max = r;
&lt;br&gt;	}
&lt;br&gt;	if( index != max ){
&lt;br&gt;		T tmp = target[index];
&lt;br&gt;		target[index] = target[max];
&lt;br&gt;		target[max] = tmp;
&lt;br&gt;		MaxHeapify( target, max, length );	
&lt;br&gt;	}
&lt;br&gt;&lt;br&gt;	return;
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void BuildMaxHeap( T* target, unsigned int length ){
&lt;br&gt;	for( unsigned int i = (length-1)/2; true ; i-- ){
&lt;br&gt;		MaxHeapify( target, i, length );
&lt;br&gt;		if( 0 == i ){
&lt;br&gt;			break;
&lt;br&gt;		}
&lt;br&gt;	}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;&lt;br&gt;template &lt;typename t&gt;&lt;br&gt;void HeapSort( T* target, unsigned int length){
&lt;br&gt;	BuildMaxHeap( target , length );
&lt;br&gt;	while(length != 0 ){
&lt;br&gt;		T tmp = target[length-1]; 
&lt;br&gt;		target[length-1] = target[0];
&lt;br&gt;		target[0] = tmp;
&lt;br&gt;		length--;
&lt;br&gt;		MaxHeapify(target, 0, length );
&lt;br&gt;	}
&lt;br&gt;}
&lt;br&gt;&lt;br&gt;#endif
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/typename&gt;&lt;/typename&gt;&lt;/typename&gt;&lt;/code&gt;</pre>
<p>includeしてから次ように使う。</p>
<pre>&lt;code&gt;
&lt;br&gt;unsigned char buf[] = {5,7,10,8,11};
&lt;br&gt;HeapSort( buf, 5 );
&lt;br&gt;//ここでbuf内はソート済み。
&lt;br&gt;&lt;/code&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://programming.jugglershu.net/wp/?feed=rss2&#038;p=550</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>マジック？</title>
		<link>http://programming.jugglershu.net/wp/?p=635</link>
		<comments>http://programming.jugglershu.net/wp/?p=635#comments</comments>
		<pubDate>Tue, 17 Feb 2009 03:16:00 +0000</pubDate>
		<dc:creator><![CDATA[shu]]></dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Poco]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programming.jugglershu.net/wp/?p=635</guid>
		<description><![CDATA[今一番知りたいことは、オブジェクト指向のよりよい設計はどのようにして考えられて、生まれるのかということ。何か基本原則というか、こういうときはこう作ればよいのようなものがあるのだろうか。デザインパターンとかそういうのはあるけど、本当にそれだけでは無理じゃないだろうか。 いまだに理解できないのはPoco(C++のライブラリ)の設計がどのようにして考えられたものなのかということ。僕にはマジックに見える。 <a class="more-link" href="http://programming.jugglershu.net/wp/?p=635">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>今一番知りたいことは、オブジェクト指向のよりよい設計はどのようにして考えられて、生まれるのかということ。何か基本原則というか、こういうときはこう作ればよいのようなものがあるのだろうか。デザインパターンとかそういうのはあるけど、本当にそれだけでは無理じゃないだろうか。</p>
<p>いまだに理解できないのはPoco(C++のライブラリ)の設計がどのようにして考えられたものなのかということ。僕にはマジックに見える。なんでこんなにうまくできてるんだ、と思えるところがいたるところにある。つまり、簡単に再利用できて、組み合わせることでどんどん新しい物が作れる。実際に目には見えるし（ソースは公開されているし）、何がどうなっているかもすべてわかる。でも&#8221;どのように&#8221;がわからない。</p>
<p>いつもプログラムを書くときに、どのように全体を組み立てるかを考えるけど、何をインターフェースとして、何を抽象クラスとして、そしてそれらの依存関係・・・と考えるけど、結局途中でなにかおかしくなる。</p>
<p>これでいいのだろうか。</p>
<p>Pocoのようにするには何を勉強すればいいんだろうか。単なる経験だろうか。それならそれでよいけど、なんとなくそうじゃない気がする。もっとなにかこういうことだ、ということがあってよいように思う。</p>
]]></content:encoded>
			<wfw:commentRss>http://programming.jugglershu.net/wp/?feed=rss2&#038;p=635</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CppUnitでstd::exceptionのテストはできない？</title>
		<link>http://programming.jugglershu.net/wp/?p=646</link>
		<comments>http://programming.jugglershu.net/wp/?p=646#comments</comments>
		<pubDate>Thu, 25 Sep 2008 13:49:00 +0000</pubDate>
		<dc:creator><![CDATA[shu]]></dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[CppUnit]]></category>

		<guid isPermaLink="false">http://programming.jugglershu.net/wp/?p=646</guid>
		<description><![CDATA[現在ユニットテストにCppUnitを使っている。最近使い始めて、今日直面した問題。あるメソッドがstd::exceptionを投げることを確認するテストをしたかった。CPPUNIT_ASSERT_THROW( obj.foo() , std::exception );が・・・コンパイルエラー : error C2312（Visual Studio 2005)が出てしまう。問題は、上記マクロがstd <a class="more-link" href="http://programming.jugglershu.net/wp/?p=646">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>現在ユニットテストにCppUnitを使っている。最近使い始めて、今日直面した問題。<br />あるメソッドがstd::exceptionを投げることを確認するテストをしたかった。<br />CPPUNIT_ASSERT_THROW( obj.foo() , std::exception );<br />が・・・<br />コンパイルエラー : error C2312（Visual Studio 2005)が出てしまう。<br />問題は、上記マクロがstd::expressionを用いて実装されていること。<br />std::expeptionのcatch部分が二つになってしまう。</p>
<p>http://www.nabble.com/CPPUNIT_ASSERT_THROW-double-handling-of-STL-std::exception-tc9497496.html<br />こんなのは見つけたけど、結局あまり良い解決策は見つけられなかった。</p>
]]></content:encoded>
			<wfw:commentRss>http://programming.jugglershu.net/wp/?feed=rss2&#038;p=646</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Binary Treeの実装</title>
		<link>http://programming.jugglershu.net/wp/?p=648</link>
		<comments>http://programming.jugglershu.net/wp/?p=648#comments</comments>
		<pubDate>Tue, 23 Sep 2008 11:43:00 +0000</pubDate>
		<dc:creator><![CDATA[shu]]></dc:creator>
				<category><![CDATA[AlgorithmBinaryTree]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Data Structure]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://programming.jugglershu.net/wp/?p=648</guid>
		<description><![CDATA[今日はアルゴリズム、データ構造の勉強。BinaryTreeのInsert部分だけ作ってみた #include &#60;cstddef&#62;&#60;br&#62;&#60;br&#62;template&#60;class T&#62; class BinaryTree&#60;br&#62;{&#60;br&#62;template &#60;class T&#62; class Element{&#60;br&#62; <a class="more-link" href="http://programming.jugglershu.net/wp/?p=648">続きを読む <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>今日はアルゴリズム、データ構造の勉強。<br />BinaryTreeのInsert部分だけ作ってみた</p>
<pre>#include &lt;cstddef&gt;&lt;br&gt;&lt;br&gt;template&lt;class T&gt; class BinaryTree&lt;br&gt;{&lt;br&gt;template &lt;class T&gt; class Element{&lt;br&gt;public:&lt;br&gt;Element()&lt;br&gt;:parent(NULL),child_less(NULL),child_more(NULL)&lt;br&gt;{&lt;br&gt;};&lt;br&gt;~Element(){ &lt;br&gt;delete child_less;&lt;br&gt;delete child_more;&lt;br&gt;};&lt;br&gt;&lt;br&gt;Element* parent;&lt;br&gt;Element* child_less;&lt;br&gt;Element* child_more;&lt;br&gt;T  obj;&lt;br&gt;};&lt;br&gt;public:&lt;br&gt;BinaryTree(void)&lt;br&gt;:m_first(NULL)&lt;br&gt;{&lt;br&gt;}&lt;br&gt;&lt;br&gt;~BinaryTree(void){&lt;br&gt;delete m_first;&lt;br&gt;};&lt;br&gt;&lt;br&gt;int Insert(const T&amp; obj){&lt;br&gt;Element&lt;T&gt; *el = new Element&lt;T&gt;();&lt;br&gt;el-&gt;obj = obj;&lt;br&gt;&lt;br&gt;if( !m_first ){&lt;br&gt;m_first = el;&lt;br&gt;return 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;return CheckAndInsertObject( m_first , el ); &lt;br&gt;};&lt;br&gt;&lt;br&gt;private:&lt;br&gt;Element&lt;T&gt;* m_first;&lt;br&gt;&lt;br&gt;int CheckAndInsertObject( Element&lt;T&gt;* target_el, Element&lt;T&gt;* new_el ){&lt;br&gt;if( !target_el ){&lt;br&gt;return 0;&lt;br&gt;}&lt;br&gt;&lt;br&gt;if( target_el-&gt;obj &lt; new_el-&gt;obj ){&lt;br&gt;if( target_el-&gt;child_more ){&lt;br&gt;return CheckAndInsertObject( target_el-&gt;child_more , new_el );&lt;br&gt;}&lt;br&gt;else{&lt;br&gt;target_el-&gt;child_more = new_el;&lt;br&gt;new_el-&gt;parent = target_el;&lt;br&gt;return 1;&lt;br&gt;}&lt;br&gt;&lt;br&gt;}&lt;br&gt;else if( target_el-&gt;obj &gt; new_el-&gt;obj ){&lt;br&gt;if( target_el-&gt;child_less ){&lt;br&gt;return CheckAndInsertObject( target_el-&gt;child_less , new_el );&lt;br&gt;}&lt;br&gt;else{&lt;br&gt;target_el-&gt;child_less = new_el;&lt;br&gt;new_el-&gt;parent = target_el;&lt;br&gt;return 1;&lt;br&gt;}&lt;br&gt;}&lt;br&gt;&lt;br&gt;delete new_el;&lt;br&gt;return 0;&lt;br&gt;&lt;br&gt;};&lt;br&gt;};&lt;br&gt;&lt;br&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://programming.jugglershu.net/wp/?feed=rss2&#038;p=648</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
