C++相談室 part28
■ このスレッドは過去ログ倉庫に格納されています
0001v(^・^)v
NGNGただし質問の前にはFAQに一通り目を通してください。
また、テンプレートライブラリ(STL含む)に関する質問は
専用の別スレへどうぞ。
過去スレ、関連スレ、関連リンクなどはこちら>>2-13
0002v(^・^)v
NGNG1 http://mimizun.mine.nu:81/2chlog/tech/piza.2ch.net/tech/kako/980/980175292.html
2 http://pc.2ch.net/tech/kako/996/996640937.html
3 http://pc.2ch.net/tech/kako/1003/10038/1003832761.html
4 http://pc.2ch.net/tech/kako/1009/10090/1009071535.html
5 http://pc.2ch.net/tech/kako/1014/10142/1014217496.html
6 http://pc.2ch.net/tech/kako/1018/10184/1018454705.html
7 http://pc.2ch.net/tech/kako/1021/10217/1021787032.html
8 http://pc3.2ch.net/tech/kako/1025/10250/1025010364.html
9 http://pc3.2ch.net/tech/kako/1027/10273/1027347982.html
10 http://pc3.2ch.net/tech/kako/1029/10293/1029315669.html
11 http://pc3.2ch.net/tech/kako/1032/10323/1032345774.html
12 http://pc3.2ch.net/tech/kako/1035/10350/1035005882.html
13 http://pc3.2ch.net/tech/kako/1038/10380/1038031395.html
14 http://pc2.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc2.2ch.net/tech/kako/1043/10436/1043605481.html
16 http://pc2.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc2.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc2.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc2.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc2.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc2.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc2.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc2.2ch.net/test/read.cgi/tech/1062690663/
24 http://pc2.2ch.net/test/read.cgi/tech/1066546387/
25 http://pc2.2ch.net/test/read.cgi/tech/1067949669/
26 http://pc2.2ch.net/test/read.cgi/tech/1070164402/
27 http://pc2.2ch.net/test/read.cgi/tech/1074454641/
0003v(^・^)v
NGNG[C++ FAQ]
http://www.parashift.com/c++-faq-lite/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[禿 Stroustrup]
http://www.research.att.com/~bs/
[C++ International Standard]
http://www.kuzbass.ru/docs/isocpp/
http://www.kuzbass.ru/docs/ansi_iso_iec_14882_1998.pdf
http://www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=38110&ICS1=35&ICS2=60&ICS3=
[JTC1/SC22/WG21 - C++]
http://std.dkuug.dk/jtc1/sc22/wg21/
[C/C++ Users Journal]
http://www.cuj.com/
[cppll (ML)]
http://www.trickpalace.net/cppll/ (日本語)
0004v(^・^)v
NGNGamazon.com C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/
The C++ Programming Language
http://www.amazon.com/exec/obidos/ASIN/0201700735/
http://www.amazon.co.jp/exec/obidos/ASIN/475611895X/ (翻訳)
C++ Primer (3rd Edition)
http://www.amazon.com/exec/obidos/ASIN/0201824701/
http://www.amazon.co.jp/exec/obidos/ASIN/4756140068/ (翻訳)
The C++ Standard Library
http://www.amazon.com/exec/obidos/ASIN/0201379260/
http://www.amazon.co.jp/exec/obidos/ASIN/4756137156/ (翻訳)
Effective C++
http://www.amazon.com/exec/obidos/ASIN/0201924889/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118089/ (翻訳)
More Effective C++
http://www.amazon.com/exec/obidos/ASIN/020163371X/
http://www.amazon.co.jp/exec/obidos/ASIN/4756118534/ (翻訳)
Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/0201615622/
http://www.amazon.co.jp/exec/obidos/ASIN/4894712709/ (翻訳)
More Exceptional C++
http://www.amazon.com/exec/obidos/ASIN/020170434X/
Effective STL
http://www.amazon.com/exec/obidos/ASIN/0201749629/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/ (翻訳)
Modern C++ Design
http://www.amazon.com/exec/obidos/ASIN/0201704315/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/ (翻訳)
C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
0005v(^・^)v
NGNG[Boost]
Boost http://www.boost.org/
(日本語) http://user.ecc.u-tokyo.ac.jp/~s31552/wp/boost/
(日本語) http://www.kmonos.net/alang/boost/
[STL]
STLport http://www.stlport.org/
SGI-STL http://www.sgi.com/tech/stl/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://www005.upp.so-net.ne.jp/episteme/html/stlprog/
(日本語) http://www.wakhok.ac.jp/~sumi/stl/
[Loki]
http://www.moderncppdesign.com/
LokiPort-MSVC7 http://www.geocities.com/rani_sharoni/LokiPort.html
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
[他]
ACE http://www.cs.wustl.edu/~schmidt/
Blitz++ http://www.oonumerics.org/blitz/
flex++ Bison++ http://www.idiom.com/free-compilers/TOOL/BNF-15.html
[他ライブラリリンク集]
http://www.trumphurst.com/cpplibs/cpplibs.phtml
(日本語) http://www.kmonos.net/alang/cpp/lib.html
0006v(^・^)v
NGNG[C++】template 統合スレ]
http://pc2.2ch.net/test/read.cgi/tech/1066493064/l50
[ぼるじょあがC/C++の宿題を片づけますYO! 19代目]
http://pc2.2ch.net/test/read.cgi/tech/1073566342/l50
[初心者にVisual C++を教えるスレ★ Part9]
http://pc2.2ch.net/test/read.cgi/tech/1068983609/l50
[■ VisualC++(MFC限定)相談室 MFC10.dll■]
http://pc2.2ch.net/test/read.cgi/tech/1074104008/l50
[ATL 相談室]
http://pc2.2ch.net/test/read.cgi/tech/1029029882/l50
[C/C++でのWindowsPrograming議論スレ(質問お断り)]
http://pc2.2ch.net/test/read.cgi/tech/1049790146/l50
[COMの世界を斬る!]
http://pc2.2ch.net/test/read.cgi/tech/981823340/l50
[managed C++ やろうぜ!!]
http://pc2.2ch.net/test/read.cgi/tech/1014486422/l50
[C++Builder相談室 Part8]
http://pc2.2ch.net/test/read.cgi/tech/1070222674/l50
[タダで使えるBorland C++ Part3]
http://pc2.2ch.net/test/read.cgi/tech/1054390397/l50
[Borland C++ BuilderX]
http://pc2.2ch.net/test/read.cgi/tech/1065260556/l50
[Code of the Nerds" Digital Mars C/C++]
http://pc2.2ch.net/test/read.cgi/tech/1044210976/l50
[GCCについて part3]
http://pc2.2ch.net/test/read.cgi/tech/1072484422/l50
[OpenWatcom C++]
http://pc2.2ch.net/test/read.cgi/tech/1033433728/l50
[タダで最強!フリーC/C++コンパイラ]
http://pc2.2ch.net/test/read.cgi/tech/1035882599/l50
0007デフォルトの名無しさん
NGNG後何かあったら付け足してください。
0008デフォルトの名無しさん
NGNG乙curry
0009デフォルトの名無しさん
NGNG乙!
0010デフォルトの名無しさん
NGNGCDでのRAWに対応するものをDVDで引き出すコマンドってありますでしょうか。
0011デフォルトの名無しさん
NGNGスレ違い
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
0015デフォルトの名無しさん
NGNGすげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNGとかいうエラーが出るんだけどこれってどうすればいいのでちゅか?
0018デフォルトの名無しさん
NGNG(前略)(中略)(後略)
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG海外サイトの翻訳だけど、iostreamだけでなくSTLのリファレンスもある。
ttp://www.shibu.jp:8080/cppreference/index.html
0023デフォルトの名無しさん
NGNG乙
0024デフォルトの名無しさん
NGNGWWWで公開されてていいものかどうかは知らんが。
0025デフォルトの名無しさん
NGNGttp://jbbs.shitaraba.com/bbs/read.cgi/computer/5651/1076858362/14
>引っ越しが完了したらttp://www.shibu.jp/cppreference/になります。
だそうです。
0026デフォルトの名無しさん
NGNGこれ、どういうこと?
0027デフォルトの名無しさん
NGNGMetrowerks CodeWarrior 8.2 Pro for Winを使っております。
(hello.cpp)
class hoge
{
public:
hoge();
~hoge();
private:
struct impl* pimpl_;
};
struct hoge::impl{};
hoge::hoge() : pimpl_(new impl){}
hoge::~hoge(){delete pimpl_;}
int main()
{
hoge hage;
return 0;
}
(メッセージ)
エラー: 宣言シンタックスエラー
hello.cpp 行: 9 struct hoge::impl{};
エラー: 宣言シンタックスエラー
hello.cpp 行: 10 hoge::hoge() : pimpl_(new impl){}
警告: 不完全な struct/union/class 'impl' の使い方が不当です。
hello.cpp 行: 11 hoge::~hoge(){delete pimpl_;}
ちなみに
struct impl;
impl* pimpl_;
とあらかじめ宣言すれば通ります。
0028デフォルトの名無しさん
NGNG'struct impl'の形はelaborated-type-specifierといって、でてくる文脈によって働きが微妙に異なる。
struct impl;
とかくと、そのスコープでimplが宣言され、
struct impl* pimpl_;
とかくと、「そのスコープを含む、最も内側の、非クラス、且つ、非関数宣言の」スコープ(この場合はグローバル名前空間)
でimplが宣言されたことになる。
詳しくは規格の3.3.1の5を参照すべし
002928
NGNG誤:とかくと、そのスコープでimplが宣言され、
正:とかくと、その宣言を含むスコープでimplが宣言され、
誤:とかくと、「そのスコープを含む、最も内側の、...
正:とかくと、「その宣言を含む、最も内側の、...
0030デフォルトの名無しさん
NGNG003126
NGNGレスありがとうございます。ご指示のありました規格書を読みましたところ、
ご指摘の通り、この場合struct implはグローバル空間に宣言されていて、
struct hoge::impl〜のhoge::を削除することによってコンパイルすることが
できました。
しかしながら、一つの疑問が増えます。前掲のコードはExceptional C++(訳)の
Pimplイディオムに必要な部分だけを取り出してきたものと認識して
おります。私の認識がが間違っているのでしょうか。それとも前掲の
書籍のサンプルコードが間違っているのでしょうか。どなたか更にご指摘願います。
0033デフォルトの名無しさん
NGNG本は持ってないけど、
> struct hoge::impl{};
これを
struct impl{};
こうしてあった、とか?
0035デフォルトの名無しさん
NGNG項目27は「先行宣言してあるクラスへの」と書いてあるから
struct impl; は省略されていると解釈したほうがいいんじゃないだろうか。
しかし、項目30とか見ると、Sutterタンのサボりやね。
0036デフォルトの名無しさん
NGNGよくC++にはガベージコレクション(GC)がないのが欠点(?)
とか言われますが、自分的には数年C++を使ってきて
スマートポインタで十分なのですが、それでもGCが必要という
のには何か理由があるのでしょうか?
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG標準には使いづらいauto_ptrしかないからそのことをいってるんだと思われ。
shared_ptrとかそのうち標準になるんだろうね。
制御できないGCなんていくらあっても屑なんだが。
0039デフォルトの名無しさん
NGNG004027
NGNGSutterさんがサボったのだろうと思います。これからはきがねなく先行宣言
しようと思います。重ね重ねありがとうございました。
0042デフォルトの名無しさん
NGNG成熟させるのが面倒。
004336
NGNG使っておりました(TT
もう一度勉強してきますです。
ありがとうございました。
0044r
NGNGスレッド間のデータの受け渡しが簡単になるよ。
0045デフォルトの名無しさん
NGNG0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNGデータオブジェクトをのやり取りにキューを使用したてスレッド間通信する場合、
所有権があいまいになるからGCがあれば楽だといいたいのでは?
まあ、別にGCなくても実装簡単だけど。(それともJ*V*儲の戯言か?
>>36
ポイントされるオブジェクトの寿命によるんじゃないの?
リソースオブジェクトみたいに寿命が長ければ、smart_ptrで十分。
っていうかそういうものをGCにしてしまうとデストラクタがいつ走るか
わからんのでかえってよくないような気がする。
寿命が短く頻繁に生成・破棄を繰り返す場合には確かにGCあれば良いかも。
しかし、そういった状況は設計時に手を打てば回避可能だとおもうし。
0048デフォルトの名無しさん
NGNG↑ ↓
(・∀・)←(・∀・)
アアアァァ━━━━━(ゞ゚Д゚)ゞ━━━━━!!!
0049デフォルトの名無しさん
NGNG循環参照のことが言いたいのかね?
0050デフォルトの名無しさん
NGNGtp://www.cc.nao.ac.jp/fsunman/japanese/C++/
0051デフォルトの名無しさん
NGNGまた、in_availってどんな風に使うのでしょうか?
ifstream file("test.txt");
cout << file.rdbuf()->in_avail() << endl; ←こいつ
file.read(buf, M);
cout << file.rdbuf()->in_avail() << endl;
レスお願いします。
0052デフォルトの名無しさん
NGNG0053デフォルトの名無しさん
NGNGifstreamを使って、エラーをチェックするのが一般的なのでしょうか?
0054デフォルトの名無しさん
NGNG0055デフォルトの名無しさん
NGNG実行してエラーになったらファイルがない。
0056デフォルトの名無しさん
NGNG日本語版と英語版で違ってたりしますか?
リンクでエラーが出るのでLIBの中身を見てみたところ
一文字だけ違ってました。
?関数名@クラス名@@QAEXI@Z
が
?関数名@クラス名@@QAEXK@Z
みたいな感じでI->KやH->Jみたいに
どこか一箇所がコード2つ分後ろにずれます。
ご教授よろしくお願いします。
0057デフォルトの名無しさん
NGNGよく知らんけどスレ違いだろう。
005856
NGNG005927
NGNG0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGboost::filesystem::exists
0062デフォルトの名無しさん
NGNGtest.txtは空じゃない?
ちなみにBCC5.6.4で14,278バイトのテキストを入力に取った
時の出力。
14278
3928
0063デフォルトの名無しさん
NGNGVC++6.0だとコンパイルできないのです。
通したいのでしがなにか技ないですか?
#include <iostream>
class A { public: int a1; char *p; int a2;};
class B {public: int b1; int b2;};
union C { A aa; B bb;};
C c = { aa:{ 1, "hoge", 2 } };
C d = { bb:{ 3, 4 } };
int main(){ std::cout<< c.bb.b2 << "\n"; return 0;}
0064デフォルトの名無しさん
NGNGC99? 無理だと思う…
0065デフォルトの名無しさん
NGNGどうしてもというのなら
独自拡張があるかどうかVCスレあたりで聞いてみては?
0066デフォルトの名無しさん
NGNG>>65
サンクスです。
他で聞いてみます。
0067デフォルトの名無しさん
NGNGがいるからここに誘導するか?
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGワロタ
0073デフォルトの名無しさん
NGNGenum { VAL1=1, VAL2=2 }
int result = foo(VAL1, VAL2);
みたいに inline 関数の実引数が定数のとき、コンパイラが
a * 100 + b を定数式と認識してくれることを期待してもいいもんですか?
0074デフォルトの名無しさん
NGNG奇遇ですなぁ.漏れつい昨日これと同じことして遊んでたよ.
もっと複雑なことさせたけどね.
結論から言うと期待しても良い.
その例ではfooの呼び出しはリテラルの102に置き換えられることを期待できる.
ただし,どこまで深く定数の伝播を評価できるかはコンパイラ依存かと.
0075デフォルトの名無しさん
NGNG期待できることもあるし、できないこともある。
コンパイラにアセンブリコードを吐かせてみたまえ。
0076デフォルトの名無しさん
NGNG(配列のサイズとか)には使えないんじゃないか?
0079デフォルトの名無しさん
NGNGどうしてもコンパイル時に評価して欲しければというのならテンプレート使って計算させろ
0080デフォルトの名無しさん
NGNGというか、その計算を何万回もやるんならともかく、
そこだけ取り上げてどういう風に最適化されるか考えるのは
どっちかというと無駄。初心者卒業あたりって、とにかくそうやって
一つ一つの命令を最適化しようとするけど、実際にはアルゴリズムとか
ループを見直した方がよい。20-80の法則ってやつ。
profiler使った結果、その関数の呼び出しがボトルネックだって
言うのが前提なら何も言わないけど。
ま、一番正解は>>76ってことで。
0081デフォルトの名無しさん
NGNGいうポインタがコピーされるのだから、privateメンバ変数の隠蔽に使いたい場合には
自分でoperator=()を定義する必要がありますよね?Exceptional C++にはそういう
記述は見当たらないのですが。
0082デフォルトの名無しさん
NGNG0083デフォルトの名無しさん
NGNGEffectiveならともかく、Exceptionalはそういうレベルは当然の話題として
わざわざ触れてないんだと思う。
>>82
smart_ptr使うのとoperator=のオーバロードはぜんぜん趣旨が違う。
008482
NGNGたとえば、
boost::scoped_ptr<impl> pimpl; // コピー禁止
boost::shared_ptr<impl> pimpl; // 参照カウンタ方式で共有
こんなふうにすると、operator=のオーバーロードは不要になると思ってる。
なんか間違ってる?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNG「組み込み型のように振舞え」という原則にはずれている。
本当に共有していても動作に問題が無いとか、
ライト・オン・コピーしてくれてるんなら文句は無いが。
クラスライブラリとかで勝手にこんな実装されると混乱するのでやめてほしい。
デバッグの最中に「このクラスは代入されても実装部分は共有される」なんて
ドキュメントを見たらぶち切れると思う。
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGソース読んでるとか?
0089デフォルトの名無しさん
NGNGそのサイトすごくいい!
0090デフォルトの名無しさん
NGNG0091デフォルトの名無しさん
NGNGSTL覚えるのと似たような感じ?
てーか、どうやっても糞もねーだろ。
使って覚える、これ最強。
0092デフォルトの名無しさん
NGNGとりあえず
ttp://www.kmonos.net/alang/boost/
ここを眺めていれば使い方の概要はわかる
0093デフォルトの名無しさん
NGNG{
cout << array[i];
}
これをアルゴリズム(for_each ?)を使って書くには
どうしたらいいのでしょうか?
0094デフォルトの名無しさん
NGNG#include <iterator>
copy( array.begin(), array.end(), ostream_iterator<T>(cout) );
Tはarrayの要素の型ね。
Boost使ってよければ
using boost::lambda;
for_each( array.begin(), array.end(), cout << _1 );
0095デフォルトの名無しさん
NGNG試してみます。ありがとうございました。
0096デフォルトの名無しさん
NGNGfor_each以外に
vector<int> v;
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
あとlambdaでの注意点。
using namespace std;using namespace boost::lambda;
for_each(v.begin(),v.end(),cout << _1 <<" ");//これは動く
/*これは動かない、少なくともbasic_ostream<char,char_traits<char> > & endl(basic_ostream<char,char_traits<char> > &)と
basic_ostream<wchar_t,char_traits<wchar_t> > & endl(basic_ostream<wchar_t,char_traits<wchar_t> > &)があるので。
*/
for_each(v.begin(),v.end(),cout << _1 << endl);
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNGこの衝撃的なコードがなぜ動くのかも疑問だけど、なにがどうlambdaなのかがもっと疑問
λってナニを意味してるの?
0099デフォルトの名無しさん
NGNG0100デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNG若い人は知らんか
■ このスレッドは過去ログ倉庫に格納されています