- 1 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:46:04.23 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part97 toro.2ch.net/test/read.cgi/tech/1343559275/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.79【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1341052801/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/
- 2 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:46:47.34 ]
- ■基本■
[C++ FAQ] www.parashift.com/c++-faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) Cとその仕様を比較しながらの解説なので分かりやすい。 ***** 質問の前に必ずこの二つに目を通してください ***** [C/C++ リファレンス] en.cppreference.com/w/cpp (英語) ja.cppreference.com/w/cpp (↑の日本語訳だけどまだ未完) [Stroustrup] www.stroustrup.com/ [C++ International Standard] www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=50372 [JTC1/SC22/WG21 - C++] www.open-std.org/jtc1/sc22/wg21/ ここから規格の最新ドラフトがダウンロードできる。 [JIS X3014] www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014 ISO規格の日本語訳。JIS X3014:2003はISO/IEC 14882:2003 (E)に対応。
- 3 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:47:18.56 ]
- ■Books■
amazon C,C++関連書籍 www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/ www.amazon.co.jp/b/?node=754384 The C++ Programming Language www.amazon.com/exec/obidos/ASIN/0201700735/ www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳) C++ Primer (3rd Edition) www.amazon.com/exec/obidos/ASIN/0201824701/ www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳) The C++ Standard Library www.amazon.com/exec/obidos/ASIN/0201379260/ www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳) Effective C++ www.amazon.com/exec/obidos/ASIN/0201924889/ www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳) More Effective C++ www.amazon.com/exec/obidos/ASIN/020163371X/ www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳) Exceptional C++ www.amazon.com/exec/obidos/ASIN/0201615622/ www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳) More Exceptional C++ www.amazon.com/exec/obidos/ASIN/020170434X/ www.amazon.co.jp/exec/obidos/ASIN/4894714833/ (翻訳) Exceptional C++ Style www.amazon.com/exec/obidos/ASIN/0201760428/ www.amazon.co.jp/exec/obidos/ASIN/4894714663/ (翻訳)
- 4 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:48:47.01 ]
- ■Books(Templateまわり)■
Effective STL www.amazon.com/exec/obidos/ASIN/0201749629/ www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳) Modern C++ Design www.amazon.com/exec/obidos/ASIN/0201704315/ www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳) C++ Templates www.amazon.com/exec/obidos/ASIN/0201734842/ C++ Template Metaprogramming www.amazon.com/exec/obidos/ASIN/0321227255/
- 5 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:51:23.69 ]
- ■Libraries■
[Boost] Boost www.boost.org/ (日本語) www.kmonos.net/alang/boost/ (日本語) shinh.skr.jp/boost/ [標準ライブラリ] SGI-STL www.sgi.com/tech/stl/ STLport stlport.sourceforge.net/ GNU libstdc++ gcc.gnu.org/libstdc++/ Apache C++ Standard Library (STDCXX) stdcxx.apache.org/ STLFilt www.bdsoft.com/tools/stlfilt.html (日本語) episteme.wankuma.com/stlprog/ (※1999年発行注意) [Loki] sourceforge.net/projects/loki-lib/ LokiPort-MSVC6sp5 fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
- 6 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 00:59:12.13 ]
- テンプレここまで。あと続けたい人は好きにして。
変更点 - 禿リンクを www.stroustrup.com に変更 - Libraries復活(順番間違えた。Booksよりこっちが先だった。)
- 7 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 12:46:08.11 ]
- struct edge;
struct node { list<edge> edges; node_data data; }; struct edge { node * to; edge_data data; }; struct graph { vector<node> nodes; }; こんな構造でグラフを作ってます グラフの形状が初期化してから変わらないなら問題ないのですが これだと要素の追加削除に無駄が多い気がします もっとグラフの変形に強いデータ構造はないでしょうか
- 8 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 13:12:29.80 ]
- >7
疎なグラフならstd::map<Node, Node>でよろしかろう ここでNodeはノードを表す型で、std::map<key, value>が勝手に行うコピーに手当てされているものとする 疎でないグラフなら行列(隣接行列)でおk 行列表現のC++における最も良いやり方は知らん
- 9 名前:8 mailto:sage [2012/08/25(土) 13:18:29.33 ]
- というより、グラフはノード(頂点)集合Vと枝集合Eの二つ組(V, E)で一意に規定されるのだから、
- Vのは、std::map<int, Node>で表してノードのキーからNodeオブジェクトを引けるようにしておいて、 - Eのは、std::map<int, int>でノードのキーの対として表現する 等の2段構えとするのが自然かも試練 詳細は何を効率よく行いたいかによる有効グラフはEの表現で工夫する
- 10 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 14:01:34.43 ]
- 以下のコードが動くのは、環境依存ではなく、正しい挙動ですか
その場合const性を保つために暗黙的にコピー動作に変更されているということでしょうか これをエラーや警告を出すようにすることはできませんか 特にaut const std::wstring STRING = L"hoge"; void f(const std::wstring &s) {} const std::wstring & e() {return STRING;} int main() { f(L"hoge"); auto a = e(); a.push_back(L'a'); std::wstring s = e(); s.push_back(L'a'); }
- 11 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 14:41:49.34 ]
- >>10
そこコードのどこについてどんなエラーや警告を出したいの?
- 12 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:09:52.69 ]
- 仮想関数を持ったスーパークラスのポインタに派生クラスを入れて、
仮想関数を呼び出したいんだけどどうすればいいでしょうか? class SuperC{ virtual bool func()=0; }; class SubC{ virtual bool func(){ 何らかの処理 } }; int main(){ SuperC* super=new SubC(); return 1; } インスタンス化する予定はないのにSuperCのポインタは宣言できませんって言われる
- 13 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:10:33.85 ]
- class SubC:public SuperC{
です
- 14 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:11:10.51 ]
- public:
- 15 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:15:23.98 ]
- >>14
しにたいありがとう
- 16 名前:デフォルトの名無しさん [2012/08/25(土) 15:20:22.69 ]
- >>10
まずe()は、return STRING;であって return &STRING;ではないから、 e()の呼び出し毎にSTRINGがコピー(ていうか新規生成)されてそれがスタックに積まれて返される (中略) 以降は呼び出し元の勝手
- 17 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:22:37.97 ]
- STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。 俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力 ランタイムを使用するようにして使っているが、例えばstd::vectorを 使っても使わない時と比べ10Kほどしか増えない すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。 C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。 とかいうエラーが出るんだけどこれってどうすればいいの? #include <stdafx.h> 後死ね。 言葉が悪いな。それで教えているつもりか。 まぁヒントぐらいにはなったな。 うむごくろう。
- 18 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 15:26:20.93 ]
- >>17
飽・き・た
- 19 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 16:51:07.33 ]
- >>16 e() の戻り値、参照ですよ。
- 20 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 16:54:23.47 ]
- auto&としない限り参照で受けないわな
- 21 名前:デフォルトの名無しさん [2012/08/25(土) 17:30:06.45 ]
- >>10
コピーをもろに要求する文脈だが? 変更なんかされてなく
- 22 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 17:38:57.11 ]
- 関数側で型を指定しているのにそれが無言でスルーされるのはどうなんだ
- 23 名前:デフォルトの名無しさん mailto:sage [2012/08/25(土) 17:59:56.08 ]
- ちょっと何言ってるかわかんないですねー
- 24 名前:16 mailto:sage [2012/08/25(土) 22:40:17.16 ]
- >>19
スマン恥ずかしすぎてちょっと吊ってきた
- 25 名前:デフォルトの名無しさん mailto:sage [2012/08/26(日) 02:14:03.65 ]
- >>10
>これをエラーや警告を出すようにすることはできませんか >10なコードでコピーが起きるのは、e()が参照を返した後の話なのでe()の対策ではできない エラーにしたいとしたら、STRINGをコピー不可能なクラスにすることが考えられる 例えば class wsrting2 : public std::wstring { private: wstring2(const wstring2&); /* delete */ }; というクラスを設け、>10なコードのstd::wstringをwstring2の置換する(std::wstringのかわりにwstring2を使う 他にもっと良い方法があるかもしれんが知らん
|

|