[表示 : 全て 最新50 1-99 2chのread.cgiへ]
Update time : 08/26 08:09 / Filesize : 9 KB / Number-of Response : 26
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part98



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を使う
他にもっと良い方法があるかもしれんが知らん








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<9KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef