久しぶりにテンプレート関数を使おうとしたときのいくつかの間違いを覚書として書いておきます。 Utilityクラスなるものを用意し、次のような静的メソッドを宣言、定義しました。 Utility.h template<typename T> static void Utility::releaser(std::vector<T*>& v); Utility.cpp template<typename T> void Utility::releaser(std::vector<T*>& v) { std::vector<T*>::iterator it; it = v.begin(); while(it != v.end()){ delete (*it); it = v.erase(it); } } これをコンパイルすると、 .cpp: 静的メンバ関数 ‘static void Utility:
このエントリは、C++11 Advent Calendar 2011の参加記事です。 今回は、C++11の統一初期化記法(Uniform Initialization)を使用したスタイル改善を紹介します。 統一初期化記法とは まず統一初期化記法というのは、コンストラクタの呼び出しを、関数呼び出しで使用する丸カッコだけでなく、Cからあった集成体初期化の波カッコも使えるようにしよう、というものです。 struct X { X(int a, double b, const std::string& c) {} }; X x1(1, 3.14, "hello"); // これまでの初期化構文 X x2{1, 3.13, "hello"}; // C++11で追加された初期化構文 初期化子リストとの統一 C++11では、ユーザー定義型でも配列の初期化構文を使えるようにするためにinitializer
C++標準ライブラリのシーケンスコンテナstd::vectorに関して、C++03/11でのサイズ指定コンストラクタ差異に関するメモ。 114 :デフォルトの名無しさん:2012/08/01(水) 10:00:54.97 >>111 vector(n), vector::resize(n) について。 C++03 では (n, value) と同じオーバーロードがデフォルト引数 T() で呼び出されて value の n 個のコピーからなる vector が得られた。 (ただし resize(n) は呼び出し前からあった要素はそのままね。) C++11 での右辺値参照導入に際して、おそらくこれらの操作がそのままだと CopyConstructible を要求することになってしまって理不尽な要求や無駄なコピーを生じてしまうことから、 DefaultConstructible だけで使えるよう
本業でvectorをあんまり使わないので(使えないので)、忘れないようにvectorのソート方法のメモ。 vectorコンテナをソートする場合は、stlのalgorithmのstd::sort(クイックソート)を使うと簡単にできる。 下記は、 x,y,z情報を持ったTestPointクラスをz値が小さい順にソートする。 場合の例。 ◆比較用のクラスを使用してソート #include<algorithm> #include<iostream> #include<vector> class TestPoint { public: float x; float y; float z; }; //比較用クラス class CompPoint { public: bool operator()(const TestPoint &a,const TestPoint &b) const{ if(a.z
○vectorのソート sort : クイックソートのため、同じ値同士の順序が維持されません stable_sort : マージソート、同じ値同士の順序が維持されます ■intのソート #include <stdio.h> #include <vector> #include <algorithm> #include <functional> int main(){ std::vector<int> data; data.push_back(5); data.push_back(1); data.push_back(2); data.push_back(3); data.push_back(4); std::sort(data.begin(),data.end());//昇順ソート //std::sort(&data[0],&data[5]);//上と同じ意味 {for(int i=0;i
[戻る] Puppy 2002/05/16(木) 13:48:03 Puppyです。 お世話になっています。 タイトルのとおりの質問なのですけど、例えば1日分のデータが double dayData1[24][5][10]; double dayData2[24][5]; // のようにあった場合に 今日が24日だった場合に1日から23日分の上記の配列分だけメモリを 確保して、そのメモリに2次元配列および3次元配列でアクセスしたいです。 new の動的確保は多次元配列をサポートしていないようなので、どうしていいか さっぱりわかりません。 このようなケースでは、皆様はどのように対処されていますか? いつも聞いてばかりですみません。よろしくお願いしますぅ。 m(..)m ペコリ あ 2002/05/16(木) 14:06:04 double** dayData2 = new double*
ソフトライブラリとは Vectorサイトで作品(ソフト)を公開・配布するサービスです。 Vectorのサイトにファイルがアップロードされ、誰でも自由にダウンロードすることが可能となります。 フリーソフトはもちろんのこと、パスワードがかかったファイルの登録も承っておりますので、シェアウェアの公開も行っていただけます。
AutoTrace now also available online. [01/28/04] Delineate 0.5 has been released. [12/28/03] Delineate 0.4 has been released. [11/05/03] Delineate 0.2 has been released. Delineate is another GUI front end for autotrace written in Java. [9/13/03] First public release of frontline, a Gnome/Gtk+ based GUI front end for autotrace. With frontline you are able to set trace options via GUI and preview tra
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く