C++相談室 part29
レス数が1000を超えています。これ以上書き込みはできません。
0001v(^・^)v ◆Manna2uCLg
NGNGただし質問の前にはFAQに一通り目を通してください。
テンプレートライブラリ(STL含む)に関する質問は
専用の別スレにお願いッス。
過去スレ、関連スレ、関連リンクなどは >>2-13
0002v(^・^)v
NGNG2 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://pc5.2ch.net/tech/kako/1041/10413/1041328679.html
15 http://pc5.2ch.net/tech/kako/1043/10436/1043605481.html
16 http://pc5.2ch.net/tech/kako/1045/10457/1045746245.html
17 http://pc5.2ch.net/tech/kako/1047/10475/1047560042.html
18 http://pc5.2ch.net/tech/kako/1050/10501/1050177746.html
19 http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
20 http://pc5.2ch.net/tech/kako/1055/10551/1055162298.html
21 http://pc5.2ch.net/tech/kako/1057/10575/1057580107.html
22 http://pc5.2ch.net/tech/kako/1060/10603/1060361082.html
23 http://pc5.2ch.net/tech/kako/1062/10626/1062690663.html
24 http://pc5.2ch.net/tech/kako/1066/10665/1066546387.html
25 http://pc5.2ch.net/tech/kako/1067/10679/1067949669.html
26 http://pc5.2ch.net/test/read.cgi/tech/1070164402/ (迷子)
27 http://pc5.2ch.net/test/read.cgi/tech/1074454641/ (迷子)
28 http://pc5.2ch.net/test/read.cgi/tech/1077985164/
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/ (日本語)
0004デフォルトの名無しさん
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
0006デフォルトの名無しさん
NGNG0007v(^・^)v
NGNG-【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/l50
- ぼるじょあがC/C++の宿題を片づけますYO! 21代目
http://pc5.2ch.net/test/read.cgi/tech/1078157730/l50
- ★初心者にVisual C++を教えるスレ★ Part11
http://pc5.2ch.net/test/read.cgi/tech/1077965179/l50
- ■ VisualC++(MFC限定)相談室 MFC10.dll■
http://pc5.2ch.net/test/read.cgi/tech/1074104008/l50
- ATL 相談室
http://pc5.2ch.net/test/read.cgi/tech/1029029882/l50
- C/C++でのWindowsPrograming議論スレ(質問お断り)
http://pc5.2ch.net/test/read.cgi/tech/1049790146/l50
- COM の世界を斬る!
http://pc5.2ch.net/test/read.cgi/tech/981823340/l50
- managed C++ やろうぜ!!
http://pc5.2ch.net/test/read.cgi/tech/1014486422/l50
- C++Builder相談室 Part9
http://pc5.2ch.net/test/read.cgi/tech/1080541814/l50
- タダで使えるBorland C++ Part3
http://pc5.2ch.net/test/read.cgi/tech/1054390397/l50
- Borland C++ BuilderX
http://pc5.2ch.net/test/read.cgi/tech/1065260556/l50
- Code of the Nerds" Digital Mars C/C++
http://pc5.2ch.net/test/read.cgi/tech/1044210976/l50
- GCCについて part3
http://pc5.2ch.net/test/read.cgi/tech/1072484422/l50
-OpenWatcom C++
http://pc5.2ch.net/test/read.cgi/tech/1033433728/l50
- タダで最強!フリーC/C++コンパイラ
http://pc5.2ch.net/test/read.cgi/tech/1035882599/l50
00081
NGNGすまぬ。
0009Addicted to C++ ◆nrBjarne.g
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG環境に(ry
0012デフォルトの名無しさん
NGNGすげ(ry
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG#inclu (ry
あと氏(ry
0015デフォルトの名無しさん
NGNG言葉が(ry
まぁヒント(ry
うむごくろ(ry
0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNGyyy.cpp
c:\xxx\yyy.cpp(0) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行 2701)
Visual C++
ヘルプ メニューで、サポート情報コマンドを選択してください。またはサポート情報 ヘルプ ファイルを参照してください。
zzz.cpp
c:\xxx\zzz.cpp(0) : fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'msc1.cpp', 行 2701)
Visual C++
ヘルプ メニューで、サポート情報コマンドを選択してください。またはサポート情報 ヘルプ ファイルを参照してください。
DEBUGでビルドするとこんなエラーが出るようになりました
Releaseビルドだと問題なくビルドできます
MFCAppwizardで作成したのですがMFCもATLもオプションから外してあります
コンパイラのエラーでしょうか?
VisualStudio .net 2003です
0019デフォルトの名無しさん
NGNGその時は、F7やF5でコンパイルするとダメだったけど、
「ファイルを選択→右クリック→コンパイル」
とするとなぜか通ったので、それで回避してた。
原因は面倒だったので追ってないが、プロジェクトの肥大化が
原因じゃないかと思ってる。(根拠なし)
0020デフォルトの名無しさん
NGNGMicrosoft Visual C++ Toolkit 2003
http://msdn.microsoft.com/visualc/vctoolkit2003/
0021デフォルトの名無しさん
NGNGGJあげ
0022デフォルトの名無しさん
NGNG1. std::vector< std::vector<double> >
2. boost::multi_array
3. blitz::array
だとどれが速度的にいいでしょう?
0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNG遠慮なく使え
template <typename T>
struct GYOORETSUDESUUpupupu {
T _11, _12, _13, _14;
T _21, _22, _23, _24;
T _31, _32, _33, _34;
T _41, _42, _43, _44;
};
002522
NGNG0026デフォルトの名無しさん
NGNG「マジレス禁止スレなんですか?」って聞くバカ発見
0027デフォルトの名無しさん
NGNGというか、 >>22 は速度だけが問題なのか。保守性とか考えないのかな。
本当に速度最優先なら環境と使い方に依存する面が大きいので
>>23 の通り、実際に測って比較するしかない。
0028デフォルトの名無しさん
NGNG数値演算における"行列"なら標準ライブラリではvalarrayの担当。
0029デフォルトの名無しさん
NGNGstd::valarrayで多次元配列同士の演算(乗算とか)は
面倒だろう。効率も悪い。
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNG圧倒的に速かったりするし、ホントにコレは環境依存だと思う。
gcc でもvalarray より vector の方が速かったりするしね…。
0032デフォルトの名無しさん
NGNGなんぼだと思っていたのですが(そしてgccはalias-freeの指定がなかったはず)。
あぁっと、sliceが使えるという利点もありますね。
いずれにせよvalarrayは時代の遺物というのが一般的な認識だと思います。
あと、boost::multi_arrayじゃなくて、せめてboost::ublasを引き合いに出してほしいです。
まぁ、上で言われているとおりまず測定するのが先でしょう。
数値計算は環境に非常に敏感な処理ですから。
ところで便乗になりますが、unrollの回数なんかをクライアントが環境に合わせて
調整できるような線形代数ライブラリはないんでしょうか?C++で。
0033デフォルトの名無しさん
NGNGMTLがそんな事出来たような気がしなくもないけど忘れた。勘違いかも。
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNGboost::multi_arrayのドキュメント読むとblitzからの貢献があった
となっています。
blitz::arrayはboost::multi_arrayに吸収されたと思っていいですか?
準標準と言われるものが2つもあるとどれにするか悩みますが。
0036デフォルトの名無しさん
NGNGで、レスされたことを実行しようとはしないわけ?>速度計測
0037デフォルトの名無しさん
NGNG_で始まる名前を使うなっ(とレスしてみる)
0038デフォルトの名無しさん
NGNG前もってある程度手がかりが欲しかったのよね。
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGあ、おれよく使う。やばい?
0041デフォルトの名無しさん
NGNG0042デフォルトの名無しさん
NGNGぶつかってもコンパイラが警告出してくれるからいいや。
0043デフォルトの名無しさん
NGNGboost::lambdaでもplaceholderとして同様な名前を使ってるし.
17.4.3.1.2 - Global names [lib.global.names]
-1- Certain sets of names and function signatures are always reserved to the implementation:
Each name that contains a double underscore ("__") or begins with an underscore followed by an uppercase letter (lex.key) is reserved to the implementation for any use.
Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.*
[Footnote: Such names are also reserved in namespace ::std (lib.reserved.names). --- end foonote]
0044初心者
NGNGclass body
{
double *r[ny][nz];
public:
body()
{
r = new double[nx][ny][nz]
};
};
のようにメモリーを当てたときデストラクターはどのようにすればいいのでしょうか?
delete [] r としてもうまくいかず・・・・
あとこの形は
class body
{
double ***r;
public:
r = new double** [nx];
for(int i=0;i<nx;i++) r[i]= new double* [ny];
for(int i=0;i<nx;i++)
for(int j=0;j<ny;j++)
r[i][j] = new double [nz];
};
のようにメモリーを当てるのと同じ意味なんでしょうか?
長くてすいません。
0045デフォルトの名無しさん
NGNGtemplate< typename X > class Matrix{
public:
Matrix<X>();
friend Matrix<X> operator*<X>( Matrix<X> const &, Matrix<X> const &);
};
gccではなんの問題もなくコンパイルできたのですがVS7.1だと
operator*<X>が気に入らないみたいです。どうやったらコンパイルできるんでしょう?
0046デフォルトの名無しさん
NGNG2次元配列へのポインタ
double (*r)[ny][nz];
じゃないのか?
0047デフォルトの名無しさん
NGNGその前にそのコードコンパイル通ったか?
0048デフォルトの名無しさん
NGNG意味不明。 operator* だけでいいだろ。
ひょっとして、釣りか?
0049デフォルトの名無しさん
NGNGoperator*をtemplateとして定義しようとしていますね?
VC++7.1での一つの解決法は,operator*のtemplateの前方宣言を入れることです.
ただ,その前にさらにMatrixの前方宣言を入れる必要がありますがw
template<typename X> class Matrix;
template<typename X> Matrix<X> operator*(Matrix<X> const &, Matrix<X> const &);
template< typename X > class Matrix{
//定義
};
もう一つのやり方はfriend関数の定義をclassスコープ内に書いてしまう,
いわゆるBarton-Nackman trickを使うことです.
template<typename X> class Matrix{
...
friend Matrix<X> operator*(Matrix<X> const & lhs, Matrix<X> const & rhs){
return Multiply(lhs, rhs); //他へ委譲する
}
};
>>48
一見それでよさそうなんですが,関数templateに対してそうやると面食らう結果になりますよ.
(理由を説明すると長いんですが・・・)
0050デフォルトの名無しさん
NGNG0051デフォルトの名無しさん
NGNGMatrix<X>の前にtypenameを入れたらどうか。
VC7.1は本来typenameを入れなければならない場所に入れなく
てもコンパイルが通ることがあるくせに、入れなくてもいい場所
に入れないとエラーを起こす事がある。
005245
NGNG確かに前方宣言でこのoperatorに関してはコンパイルが通りました。
ところが同じ関数名で引数が異なる関数の宣言部分
template< typename X > class Matrix{
public:
Matrix<X> func(void);
friend Matrix<X> func<X>( Matrix<X> &);
};
のフレンドの funcでエラーが出ます。前方参照を使っても駄目なようです。
gccは全く問題なく通るのですが、これらの余計な前方参照を要するのは
VC7.1のバグなのでしょうか?
0054デフォルトの名無しさん
NGNGfriend宣言しているfuncがメンバ関数のfuncを指していると解釈されてしまっていると思います.
スコープ解決子を使って見て下さい.
friend Matrix<X> (::func<X>)(Matrix<X> &);
ちなみに関数名の周りのカッコが無いと(Matrix<X>::func)と解釈しやがりますw.
前方宣言についてですが,
friend宣言の時点で関数テンプレートの実体化を行わせるわけですけれど,
その時点で関数テンプレートの宣言は見えていないとならないですから,
私としては前方宣言は必須だと思うのです.
gccの実装ではfriend宣言の後方にまで関数テンプレートの宣言を読みに行ってくれる
ようですが,むしろこちらの方が気が利きすぎかと思います.
0055デフォルトの名無しさん
NGNGあと49にも書いたのですが,前方参照がわずらわしいなら,friend関数の定義を
クラススコープ内に書くのもおススメします.(49の書き方はわかりにくかったですね)
template<typename X> class Matrix{
...
friend Matrix<X> operator*(Matrix<X> const & lhs, Matrix<X> const & rhs){
//ここにoperator*の定義を書いてしまう.
}
};
0056デフォルトの名無しさん
NGNG丁寧に回答していただきありがとうございました。
>ちなみに関数名の周りのカッコが無いと(Matrix<X>::func)と解釈しやがりますw.
これはここで質問しないと絶対にわかりませんでした。本当にありがとうございました。
前方宣言もgccに甘えていたわけですね。VCのせいにして恥ずかしい限りです。
あと>>49で十分よくわかります。一段余分に関数コールするのがちょっと気になったので
できればまっとうな(?)書き方でなんとかならないかと思っていましたので・・・
親切に教えていただき感謝の気持ちでいっぱいです。
005756
NGNGtemplate< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);
template<class X> X FuncA( Matrix<X> &);
template<typename X> class Matrix{
Matrix<X> & FuncA(void);
friend Matrix<X> & (::FuncA<X>)( Matrix<X> &);
X FuncB(void) const;
friend X (::FuncB<X>)( Matrix<X> &);
};
FuncA はOKですが FuncBは
テンプレート'X'番目の引数の型が無効です。
関数ではありません。
と文句が出ますね。この違いは戻り値の違いでしょうか?
あと、
friend Matrix<X> (::func<X>)(Matrix<X> &);
これは、gcc ではsyntax errorではねられるみたいですね。
うーん!>>49さんの言われるトリック使わないとだめかも・・・
005856
NGNG結局
gcc3.3.1: テンプレートの前方宣言なしOK, スコープ演算子使うとエラー
icc8.0: 前方宣言+スコープ演算子が要
VC7.1: 前方宣言要,スコープ演算子要,時にスコープ演算子でもエラーとなる。
って結果でした。
さて、VCはどうしよう?
0059デフォルトの名無しさん
NGNGクラスって構造体に関数を加えたやつですよね
大規模な開発で関数が多くなったり、再利用するためにライブラリ化するのに
クラスを使えばいいとは思うんですが、それ以外ってややこしくなるだけですよね
小規模やライブラリ化しないのであれば、C++よりCの方が分かりやすくていいですよね
どうしてC++で作ったほうが良いのかがよく分かりません
小さいソフトでもややこしいC++で作ったほうが良いのでしょうか?
ややこしいC++なので、大きなソフトで使えばさらにややこしくなると思うんですが…
それでも使っ方が良いんでしょうか?
0060デフォルトの名無しさん
NGNGそんな君に
ttp://www.amazon.co.jp/exec/obidos/ASIN/4797311126/250-5351434-6401851
0061デフォルトの名無しさん
NGNG0062デフォルトの名無しさん
NGNGそうはならない。
C++のややこしさを使って、大きなソフトを単純な記述で表すことが可能になったりする。
0063デフォルトの名無しさん
NGNG単に今のところC++から脱落していると言うだけのようですね。
がんばって理解すれば、ちょっとしたものでもC++で書きたくなります。
0064デフォルトの名無しさん
NGNG>>59レベルのやつにいきなり読ますなって(w
むしろ「憂プラ」の方が入りやすいんじゃ?
というか、オプジェクト指向の必要性を感じないなら無理にC++つかわんでCでいいやン。
多分、>>59氏にはそれで十分なんだよ。
0065デフォルトの名無しさん
NGNG>小規模やライブラリ化しないのであれば、C++よりCの方が分かりやすくていいですよね
は正しいと思うし、
>小さいソフトでもややこしいC++で作ったほうが良いのでしょうか?
こういう疑問を持つのは当然だと思う。ややこしいっていうのは単に文法がややこしいだけじゃなくて,
C++使っての駒組みっていうか全体構成を考えることもすごくややこしいと思うよ。デザインパターンの話じゃないんだよな。
C++を使って人様が実行速度に満足し,かつエクスキューズなしに安心して使えるクラスライブラリを提供すること
は至難の業だと思うよ。だからC#なんてのが出てきたわけだし,HDLでもC++ベースのSystemCなんてのは
ブレークするかと思った瞬間に牽引会社のSynopsysが手を引いた。これじゃ生産性があがらないと判断したと思う。
300ページぐらいなら読むけど1000ページ超えた言語解説書読破して隅々まで覚えてる奴そう多くないだろ?
0066デフォルトの名無しさん
NGNG少なくはないんじゃないかと、ふと思ったり。。。
0067デフォルトの名無しさん
NGNG多いよ〜。
「C++です」って注釈のついたソース読んだけど、OldCスタイルだったし。
で、「小規模」をどう判断するかでも変わるけど、
c++でcと同程度に書くことは可能だし巧く書ければ
可読性や保守性の点でcに勝ることも可能だと思う。
#問題は、それをできる技術者が少ないことだな。
0068デフォルトの名無しさん
NGNGこんな風に思ってるオレって、もしかしてC++のことよくわかって無いのかな?
0069デフォルトの名無しさん
NGNGTurboからBorlandに変わってすぐにPC-98の上でビヤーンとにらめっこ
しながらC++コード書いてたが、やってはいけないことがよくわからなかった。
Effective C++あたりはそこら辺がうまくまとめられてるんだけど、そんなの未だ出版
されてなかったから手探りで随分遠回りしたよ。
人様の作ったクラスライブラリ使わせてもらうだけならいいんだろな?多分!
禿げビヤーンとEffective Vol1,2読んでオブジェクト指向の本読んで、デザインパターンの
本読んで・・・いつになったら一人前になることやら・・・
そうこうしてるうちにC++自体あぽーんしたってか?
0070デフォルトの名無しさん
NGNGいきなりクラスから作り始めるわけ?
俺それできない。
ある程度Cで関数作ってみてから全体構成考えてクラス作る。
0071デフォルトの名無しさん
NGNGアプリ組みたい人はC#でやってね。
C++は暇な人やってください。
俺は暇なのでC++使ってる。
あと,complex標準でサポートしてる言語ってFORTRANとC++以外にあった?
0072デフォルトの名無しさん
NGNGあきらめてクラススコープ内に定義書いちゃいましょうw.
そっちの方が圧倒的に楽だと思います(色々実験して疲れたw).
0073デフォルトの名無しさん
NGNGC++でやった方が綺麗に書けることが多いよ。
データソースが、ファイルかリソースかメモリであるかを
意識しないでアクセスできるようなストリームクラスを作ってみ?
C++のありがたさが本当にわかるから。
純粋仮想関数の使い方を理解したらCには戻れないよ。
0074デフォルトの名無しさん
NGNG普通、データ構造とか先に考えてからじゃないと、
アルゴリズムは決まらないでしょ。
ちょっと、効率悪い作り方してるかもしれないから、
先輩とか上司に相談してみたらいいと思うよ。
0075デフォルトの名無しさん
NGNG行き当たりばったりの作り方でいいと思うけど、
仕事でそんなことやったら上司から雷落ちるなー。
設計と製造を行ったり来たりどたばたしたらマジで鉄拳飛んでくるw
プロの仕事ってそんなもんよ。
0076デフォルトの名無しさん
NGNGそういう怪しい作り方をしないようになるためにも、
C++やったほうがいいかもよ。いやまじで。
007776
NGNG少なくても、作ろうと意識した瞬間、
既に頭の中には仕様書が出来ている?
0078デフォルトの名無しさん
NGNG最初から脳内ですべてのクラス設計が出来る人間などいない
まずは作ろうとしているソフトウェアの要素となる「もの」を
リストアップして紙に書き出してみろ
そしてさらにその「もの」が内包する要素を書き出していけ
で次はそれらがどう関連しあっているかを適当でいいから図にしてみろ
最初から完璧な図を書こうとするより、とにかく思うままに関連性を
図にしていってみろ
おかしい部分に気付いたら、その時に直していけばいい
そうやっていけば、何をクラスにしていけばいいかが見えてくる
こういうことを繰り返していけば、経験則としてどういうクラス設計が
妥当かというのはいずれ身についていくよ
0079デフォルトの名無しさん
NGNG惰性で決まるだろ
0080デフォルトの名無しさん
NGNGストリームクラスを作るより、むしろ、
ストリームを引数に持つ汎用関数を作ると思うのだが。
例:
void Func1(FILE* fp);
void Func2(std::iostream& strm);
ストリームクラスの自作は、あまりに面倒ではないかい?
0081デフォルトの名無しさん
NGNGそんなに面倒じゃないと思うぞ
0082デフォルトの名無しさん
NGNGそう考えてしまうのはオブジェクト”思考”ができていないから。
例えば、Func1を利用する巨大な処理がある場合、後でファイルからではなく
メモリからアクセスするように変更しようとしたとき、全て書き換えることになる。
基底クラスStreamで純粋仮想関数Readという感じで作っておき、
派生クラスFileStream、MemoryStreamなどで、Readをオーバーライドすれば、
Streamを扱う側は、それがメモリであるかファイルであるかを考えることなく、
それらを扱えるようになる。
簡単なリードライトであれば、初心者でも一日ぐらいでストリームクラスを自作でき、
その効果が実感できると思う。
0084!=82
NGNG0085デフォルトの名無しさん
NGNGアフォの一つ覚えじゃねえのか?オブジェクト指向プログラミングやりたいなら
C++がベストチョイスじゃないだろが?まっとうなオブジェクト指向でいきたけりゃ
別な言語使え。
しかもストリームクラスの自作?いったい何の必要性があってそんな無駄なこと
せにゃならんのだ?大体メモリに関しては速度低下もたらすような余計な操作を
経由することなくアクセスしたいがためにC#じゃなくC++を使ってるのに、バカ学生かお前?
008683
NGNGそお?82氏の言いたい事ってストリームを抽象化したクラスを
作れって言いたいのでは。
80氏がFunc1とFunc2を何でならべて書いたのかわかんないけど、
>そう考えてしまうのはオブジェクト”思考”ができていないから。
ってのはちと的外れなような・・・。
0087デフォルトの名無しさん
NGNG>設計と製造を行ったり来たりどたばたしたらマジで鉄拳飛んでくるw
>プロの仕事ってそんなもんよ。
君の会社暴力団かね?
0088デフォルトの名無しさん
NGNGするとき、C++で元のコード書いてるとすごく見通しが悪くなるんだなこれが。
C++はこれからも使われ続けるだろうけど、ビジネスの峠は超えたな。
Unix系は相変わらずCが多いしな。
0089デフォルトの名無しさん
NGNGそれは>>70氏に言ってあげてください。
0090デフォルトの名無しさん
NGNGそうやって話の腰を折るんだよね。
プロ意識が無い香具師ほど、こんなこと言って話をそらす。
0091デフォルトの名無しさん
NGNGで、これ禁止すれば随分すっきりするよな。
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGどころか前科者だわな。まっとうな会社でそんなことする会社あるのか?
聞いたことないな。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGそんなこと気にするより、自己を磨くことに専念したほうがいいよ。
0097デフォルトの名無しさん
NGNG0098デフォルトの名無しさん
NGNG使う人は使えばいいし、必要性の感じない人は使わなければいい。
無理に使おうとして苦労するのも時間の無駄だし、
多重継承だけがC++のご利益では無いから。
0099デフォルトの名無しさん
NGNGライブラリのラッパーぐらいにしか使ってないよ。。。
それでもC++がいいよ。Cよりちょっとだけコーディング楽だから。
0100デフォルトの名無しさん
NGNGまあ、個人の自由だな。
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNGまったくその通りですね。先ずはあなたから。
0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNG何、過剰反応してるんだか。
関係ない話ですマソ。
0105デフォルトの名無しさん
NGNGC++ではそれを認めてるわけだが、それが理由でC++を使ってる人居るのかい?
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNG他のC++の機能の恩恵を受けている人もたくさんいるわけで。
0109デフォルトの名無しさん
NGNG必要なら使う、必要でないなら使わない。以上。
0110デフォルトの名無しさん
NGNGだから他の機能のことはどうでもいいよ。君に無理にそれを聞いてるわけじゃないんだから,
使ってなければわざわざレスはいいよ。
こっちは多重継承にどんな実例があるのか聞きたいわけなんだから。
0111デフォルトの名無しさん
NGNGソケット通信関連の関数みたいなんですが、なんなんでしょうか?。
一般的な物ですか?。
0112デフォルトの名無しさん
NGNGググればわかるよ
0113デフォルトの名無しさん
NGNG「多重継承の必要性について熱く語」られても今更迷惑だし…
0114デフォルトの名無しさん
NGNGそれこそ、本を買いあさって読むほうが早いと思うよ。
そこまでやってピンと来なければ、
そういうもんだと諦めるしかないかもね。
あと、仕事などでやってる実例はここでは言えないし。
0115デフォルトの名無しさん
NGNGだから言えなければレスしなくていいってば!教えてくれる気がある人だけコメントくれればそれでいい。
そんなに書き込みたいの?まともな実例載ってる本が見当たらないから、ここに相談しに来てるんだし。
0116デフォルトの名無しさん
NGNGcppll にでも行ってみ
011780
NGNG0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG車輪の再開発。話は知ってるけど。。。
0120デフォルトの名無しさん
NGNG“自分が求めている答以外は許せないタチ”ですか?
いちいち反応しすぎです。
つか、iostream じゃダメ?
0121デフォルトの名無しさん
NGNG違ったっけ?
で、どこと話がリンクするの?
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG>>106
0124デフォルトの名無しさん
NGNGいや、ハイパーリンクでいいのですが。
0125デフォルトの名無しさん
NGNGは、ひょっとして釣り?
0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG話はそれからでも遅くは無い。以上。
0128デフォルトの名無しさん
NGNGC(99)
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNG0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNG私の環境(Linux 2.4.25,g++ 3.3.3)ではzero fillされるようなんですけど,
これって規格で保証されてるものなんでしょうか?
例えば,
map <short, double> m0;
m0 [0];
cout << m0 [0] << endl;
ってやったときに,0って返ってきて欲しいのだけれど.
たまたまかなぁ.
0133デフォルトの名無しさん
NGNGnewで生成する値については少し事情が違う。
0134デフォルトの名無しさん
NGNGFreeMSVCって環境依存のはなしだろ!?
初心者がそういう話したら、ぺきっておるくせに。
0135132
NGNG>>133
> mapの要素はデフォルトコンストラクトされるので、その場合は0が保証される。
ただ,この説明で新たに疑問が生じたのですが,
私の環境では,スタックに,
double d0;
とか取ったときにはd0が0でないことがあります.
スタックに組み込み型を取った場合は
デフォルトコンストラクトはされないんということでしょうか?
0136デフォルトの名無しさん
NGNG133がいってるデフォルトコンストラクトは、mapのこと。
double自体には無いです。
0137132
NGNG> 133がいってるデフォルトコンストラクトは、mapのこと。
そうすると,133の内容が
最初の私の質問への返答として,分からなくなるのですが.
m0 [0];
した時点で要素であるdoubleがデフォルトコンストラクトされ,
それの値としては0が保証される.
って説明じゃないんですか???
0138デフォルトの名無しさん
NGNG0は保障されないよ。コンパイラ依存。
0139デフォルトの名無しさん
NGNG忘れて。
0140デフォルトの名無しさん
NGNGなんで、ここでコンストラクトされるとおもってるの?
0141デフォルトの名無しさん
NGNG23.3.1.2 map element access
T& operator[](const key_type& x);
1. Returns (*((insert(make_pair(x, T()))).first)).second.
ということで、まあ T() でコンストラクトされたsecondを持つpairがinsertされ
そのsecond( = T()の結果 )が返ることは規格で定義されてるね。
で、ここでTはdoubleだが、組み込み型に対する明示的な引数なしコンストラクトは
0が返る。
連想コンテナのinsert()は値が存在しているときは追加されず既存の値を返すが
ここでは空コンテナからなので追加されたものが返る。
といことで0は保証。
0142132
NGNG> m0 [0];
> なんで、ここでコンストラクトされるとおもってるの?
誤解されてるかもしれないので丁寧に書きますと,
m0のコンストラクションは,
map <short, double> m0;
で起こり,その時点でm0.size ()は0です.
その後の,
m0 [0];
で,operator []が呼ばれて,
その関数の中で,m0にはkeyが0の要素はまだ無いので,
m0.insert (make (0, double ()));が自動的に呼ばれると
思ったんですが....
ここで,要素doubleのディフォルトコンストラクタが呼ばれると.
それとも,
mapのディフォルトallocatorが使用領域をzero fillしていて,
doubleのディフォルトコンストラクタがないので,
zeroが保証されるとかですか?
0143デフォルトの名無しさん
NGNGディフォルトのallocatorは0で埋めるから、
mapで生成される要素に関して0が保障される。
>>133
double *pd= new doubleは、0を保障しない。
double d; も0になるとは限らない。
スッタクだろうが、ヒープだろうが、同じ。
0145132
NGNG> m0[0]としたとこで、allocatorが動き出す。
> ディフォルトのallocatorは0で埋めるから、
> mapで生成される要素に関して0が保障される。
おおっ! なるほど.
ありがとうございました.
0147143
NGNGたのむ!流行らないでくれ!
0148132
NGNG>>141
> で、ここでTはdoubleだが、組み込み型に対する明示的な引数なしコンストラクトは
> 0が返る。
と
>>143
> double *pd= new doubleは、0を保障しない。
> double d; も0になるとは限らない。
> スッタクだろうが、ヒープだろうが、同じ。
が矛盾していますが.どちらが正解なんでしょう?
私の環境(Linux 2.4.25,g++ 3.3.3)では,
double *pd= new doubleは,常に0です.
double d;は0になるとは限らないです.
template <typename T> T default_constuctor (T) {return T ();}
default_constuctor (double ())は,常に0です.
0149143
NGNGdouble d();
こういうことなら、非環境依存で0になるんじゃないかな。
0150デフォルトの名無しさん
NGNG後者は関数宣言な罠
0151143
NGNG0152143
NGNGdouble *pd= new double();
*pd == 0 です。
double *pd= new double;
*pd != 0 です。
0153デフォルトの名無しさん
NGNG5.3.4(New)の15によると、Tが組み込み型(POD)の場合
new T() だと初期化され、 new T だと不定値になるね。
()の有無が重要なんだなあ。
0154132
NGNG> 5.3.4(New)の15によると、Tが組み込み型(POD)の場合
> new T() だと初期化され、 new T だと不定値になるね。
> ()の有無が重要なんだなあ。
なるほど,148の疑問が分かりました.
私の環境でdouble *pd= new doubleが,常に0なのはオマケということですね.
おつき合い頂いたみなさん,どうもありがとうございました.
0155デフォルトの名無しさん
NGNG勝手に「メールアドレス付きの」ログをWebに晒されてるのが嫌。
spamがウザいので投稿で投稿したくない。
なので、2chにいるのだ。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGcppllもnoviceも万年初心者の漏れには投稿しづらいッス。
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNG0163デフォルトの名無しさん
NGNG何か検索する方法はないんですか?
0164デフォルトの名無しさん
NGNGconst char* str_;
public:
Cexception(const char* str) : str_(str){}
const char* what() const {return str_;}
};
こんなかんじの例外クラスを見かけたんですが、コレ大丈夫なんでしょうか
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGそのとおりだが(w
エラーメッセージが全部グローバルで用意されているのかな?
使いにくそうな例外クラスではある。
0167デフォルトの名無しさん
NGNGcから延々と引き継いでるプロジェクトとか、cから流れてきたプログラマとかだと
平気でやりそうな設計ですね。
0168デフォルトの名無しさん
NGNG0169160
NGNGClass{
public:
Class();
};
のとき、
Class& (*pfnClass)();
とかできそうなもんだが何故できない?
0170デフォルトの名無しさん
NGNGで、そのコンストラクタが初期化すべきオブジェクトはメモリ上のどこにあるんだ?
素直にT*を返す関数作れ。なんならtemplateで。
0171デフォルトの名無しさん
NGNGコンストラクタを直接呼び出すことは禁止
(領域の初期化がセットになる、つまりnew経由の必要がある)なので
Class hoge {
public:
static hoge * create() { return new hoge(); }
};
とでもすれば hoge::create()が静的なアドレスとれるが。
何がやりたいの?
0173デフォルトの名無しさん
NGNGファイルを示すクラスを作るときなどに
ファイルが存在した場合はオブジェクトを返却する関数をつくり
ファイルが存在しない場合はnullを返却するようにしています。
c++の場合ってそういう場合は実装するといいでしょう?
ファイルが存在しない場合はnullポインタを返却するとして
存在する場合にnew したとするとスコープの問題があるようなきがします
c++のえろい人だったらどうやって実現しますか
こんな感じで作るというのをアドバイスいただけると助かります。
0174デフォルトの名無しさん
NGNGスコープの問題とは?
0175デフォルトの名無しさん
NGNG即レスサンクスです
Hogeというクラスがあって
Hogeというクラスの中にcreateHoge()という関数(メンバ関数ではない)を作るとして
そのなかでHoge*を返却する場合に new Hoge()とした場合に問題はないのでしょうか?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGNULLじゃなくてis_openみたいにすれば
0178デフォルトの名無しさん
NGNG>>176
そのケースもjavaでやったんですけど
例外キャッチするのがだるいじゃないですか
でもそのパターンも考えてみます
>>177
なるほど
コンストラクタ呼び出したあとに必ず
定められたメソッドを呼び出して判定すると
それが一番スマートですかね
0179デフォルトの名無しさん
NGNG戻り値はauto_ptrにすれば安全かな
0180デフォルトの名無しさん
NGNGauto_ptrを使うとか:
if (Hoge *ptemp = Hoge::createHoge()) {
std::auto_ptr<Hoge> phoge(ptemp);
// phogeを使って色々...
}
って手もあるけど、例外のほうがいいかも。
0181デフォルトの名無しさん
NGNGでもってファイル操作は。
必要になった時点で fopen 使えばいいじゃないか。
<< なんか使うより fprintf の方が簡単でずっと良いだろ?
018256
NGNGいろいろやってみてわかりました。
結局 icc8.0/vc7.1/gcc 共
前方宣言に加えて、クラス内部でのfriend 関数の宣言をメンバ関数より先に行うことで、
スコープ解決子の助けなくコンパイルできることがわかりました。
因みに、(::func<X>)はgccが許可しません。
具体的に書くと次の通りです。
template< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);
template<typename X> class Matrix{
friend Matrix<X> & (::Func<X>)( Matrix<X> &);
Matrix<X> & Func(void);
};
>>58にiccでコンパイルできたと書きましたが、Funcをコールしてないときに
コンパイルできてるだけで、Funcをコールするとリンクエラーになってました。
もちろんgcc はfriend 関数とメンバ関数の宣言順なんて関係なく通ります。
やっぱり、gccの方が歴史も古い分、出来がいいような気がしますが・・・?
018356
NGNGtemplate< class X > class Matrix;
template<class X> Matrix<X> & Func( Matrix<X> &);
template<typename X> class Matrix{
friend Matrix<X> & Func<X>( Matrix<X> &);
Matrix<X> & Func(void);
};
0184デフォルトの名無しさん
NGNG変わりに使えと言われる無名namespaceはファイル内staticな変数と比べて
どんな利点がありますか?
0185デフォルトの名無しさん
NGNG「スコープを制限するためだけにある」
ってことくらいか
0186デフォルトの名無しさん
NGNGスコープ引っ越すときにつけたりはずしたりしなくていい。
内部リンケージとか外部リンケージとか気にしなくていい。
0187175
NGNG結論からいうと
今自分で作ってるソフトの例外クラスを一つ作って
そいつにエラーコードを渡すようにしました。
でファイルが存在しない場合は例外を返すようにしますた。
>>179
NULLObjectっていうことは
必要なメンバの初期化をすっ飛ばして
isOpenとかで有効かどうかチェックするってことですねたぶん
>>180
auto_ptrってのは初めて聞きますが
stlのコンポーネントみたいですね
余裕が出てきたら調べて見ますサンクス
>>181
結局例外で処理することにしました
多謝です
0188デフォルトの名無しさん
NGNG自分も色々試したのですが,結論としては,テンプレート引数に依存する型を返り値とする関数
(そしてこれはまず間違いなく関数テンプレートになると思いますが)
をfriendとして宣言するときには,型の付かないスコープ解決子(::)は使えない
(使わなくて良い)ということみたいです.
で,このときはクラス内での宣言順に気をつけたほうが良い(>>182)というわけですね.
なので54の前半分で書いたことはどうやら間違いくさいです.
誤った情報を提供してしまって申し訳ないです.
自分も色々試してみて勉強になりました.(が,細かい規格に正直うんざりした面もw)
0189デフォルトの名無しさん
NGNG消えてるんですが、
http://www.oonumerics.org/blitz/download
プロジェクト自体あぽーんしたんでしょうか?
0190デフォルトの名無しさん
NGNGsorceforgeのミラーから普通に落とせたが?
0191デフォルトの名無しさん
NGNG本当だね。最終更新日も去年の7月だし。boostのuBLASにBlitz++
その他のライブラリを開発する時のノウハウを盛り込んだと書いて
あるから、もしかしたらBlitz++プロジェクトは事実上停止し、uBLAS
に開発者が移った可能性はある。
どっかにソースないかな。
0192デフォルトの名無しさん
NGNGttp://sourceforge.net/project/showfiles.php?group_id=63961
から落とせた?
0193デフォルトの名無しさん
NGNGttp://easynews.dl.sourceforge.net/sourceforge/blitz/Blitz++-0.7.tar.gz
少なくとも俺はこれを落とせた。
0194デフォルトの名無しさん
NGNG本当だね。URLを全部指定しないとだめぽ・・・・
CGIからは全部削られているみたい。
0195デフォルトの名無しさん
NGNGextern "C" { }
が要るの?
これのせいで、どれだけ手間が増えてるか!
0196デフォルトの名無しさん
NGNGオブジェクトファイルの命名規則がCと違うから。
0197196
NGNGオブジェクトファイル内で使われるシンボルの命名規則が違うから。
誤解を招く表現だったな。
0198デフォルトの名無しさん
NGNGそんなに手間増えるか?
0199デフォルトの名無しさん
NGNG多分、ここにそんなレスを書き込む手間のほうがめんどいとおもう。
020056
NGNG上でgccの出来が云々と書いたのですが、コンパイラオプション
vc/icc /O2 /arch:SSE2 /G7
gcc -O2 -march=pentium4 -mfpmath=sse -msse2
としルーチンの入り口と出口で
time_t start, end;
start = time((time_t *)0);
...
end = time((time_t *)0);
std::cerr << difftime( end,start);
としたところ,
icc 1.0e+001
gcc 2.0e+001
vc 4.4e+001
となりました。icc8.0が断トツ。icc比gcc は半分。vc7.1は1/4の速度となりました。
020156
NGNG因みに同マシン上でFreeBSD 5.2 gcc 3.3.3では 1.5e+001となりました。
FreeBSDが何でXPより遅いのか判ってませんが??
020256
NGNG間違いばかりでスンマセン。
0203デフォルトの名無しさん
NGNGレポートおつ〜。
>!XP では20 FreeBSD 15だから速いんだ
20、15ってなんでしょうか?
スッタク、ヒプー ワロタよw
0204デフォルトの名無しさん
NGNG> template<typename X> class Matrix{
> friend Matrix<X> & Func<X>( Matrix<X> &);
> Matrix<X> & Func(void);
> };
どうでもいい話かもしれませんが、↓のほうがよくないですか?
template<typename X> class Matrix{
friend Matrix& Func<>( Matrix&);
Matrix& Func(void);
};
0205デフォルトの名無しさん
NGNGCygwin -mno-cygwinだと20sec
FreeBSD のgcc だと 15sec
0206デフォルトの名無しさん
NGNGXP
icc8.0 10sec
gcc3.3.1 -mno-cygwin 20sec (因みに-mno-cygwin指定なければ 80sec)
vc7.1 44sec
FreeBSD 5.2
gcc 3.3.3 15sec
テストソースはMatrix計算を多用(カルマンフィルタ)したものです。
0207デフォルトの名無しさん
NGNGファイルの場合は末尾にabcと書き込んで、ディレクトリの場合にはそのディレクトリに
abc.txtというファイルを作成し、そこにabcと書き込むようなプログラムを作りたいのですが
コマンドラインから入力されたものが、ファイルかディレクトリかを識別する方法ってありますか?
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGboostを使うわけね。
実はboostって触ったことすらなくてちんぷんかんぷんなんだけど、
調べてみたら面白そう。少しやってみるよ。
ありがとうございました。
0210デフォルトの名無しさん
NGNG本当にどうでもいい話なら
boost::numeric::ublas::matrixを使えば終わるという説も
0211デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNG下の方が良いというか,どっちでも良いはずです.
>>210
どうでも良くなくても,普通はそうするべきですね.
0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNGまず数値計算を勉強汁!
っつーか自然定数って何だよ。自然対数の底だろうが...ったく。
そもそもさぁ、おまえにはググって答えを見つけるぐらいの知恵はないのかよ。
0216デフォルトの名無しさん
NGNG0217デフォルトの名無しさん
NGNG「自然対数の底」を求めるプログラムを作りました。
って書いて提出すれば問題なし(たぶん)
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG0220デフォルトの名無しさん
NGNG"+自然対数" の検索結果 約 6,330 件
0221デフォルトの名無しさん
NGNG>どうでも良くなくても,普通はそうするべきですね.
それは違うな!そんなことはboostがISOの仕様に含まれてからいうべき。
標準仕様に含まれてないものを使うべきなどとは誰もいえない。
0222デフォルトの名無しさん
NGNGhttp://www.boost.org
0223213
NGNGあ,違います違います.
213は,既存のライブラリがあるなら,自分で車輪の再発明をするよりは
それを使うべきではないか?という意図の書き込みです.
boost::numeric::ublasを使うことを強制するつもりはまったく無いです.
特にmatrixは他の有力な候補もありますし.
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGdouble tmp = 1.0 + 1.0/x;
double ex = pow( tmp, x);
fprintf(stderr, "%e %e\n", x, ex);
}
質問してきた奴をぐちゃぐちゃ罵倒してる暇あるならわずか5行で回答
できるだろが!
0226デフォルトの名無しさん
NGNG#include <math.h>
#include <stdio.h>
int main(void) { printf("%f\n", pow(2, (1 / log(2)))); return 0; }
わずか3行でできるだろうが!
0227デフォルトの名無しさん
NGNGboost使って楽だけど、楽して一ユーザとして過ごしてるだけじゃ、難しくて膨大な
言語仕様のC++はなかなか身につかないんじゃないすか?C++習得の教育効果という意味で
matrixのクラスライブラリの作成は有意義だと思いますが・・・
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG>>すいません。自然定数eを計算によって求め、結果を表示するプログラムの作り方を教えてください。
出題者は収束する様子を確認させたいんだよ.
0230デフォルトの名無しさん
NGNG汎用目的のものをカスタマイズすると思いもかけず速度が改善したりってこともあるし。何より内容をちゃんと
理解しとくとサポートを中止されたときでも安心ってのもあるよ。
0231デフォルトの名無しさん
NGNGしかし自分が本当にやるべきこととはズレていることが多いので注意。
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNG教育的効果については激しく同意します.
>>230
使いたい機能が本当に限定される場合だけですね.普通に使えるものを作ろうとすると結構大変ですし.
string, vector, matrixとかって見た目ほど中身は簡単ではないですし.
それに最近のC++のライブラリは,汎用性を維持しつつ,ユーザが要求に合わせてカスタマイズし
最大限に効率を発揮させることのできる,いわゆるpolicy_basedなものが多くなってきていますから,
「ライブラリ=汎用で遅い」という図式は必ずしも成り立たなくなってきているように感じます.
(その代償として使い方が異常に煩雑になるという欠点を負うんですが)
>>231
耳が痛いですw
0234デフォルトの名無しさん
NGNGまあ、若いうちだけだなって感じ。
0235デフォルトの名無しさん
NGNG今がちょうどいい時期。
0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGと思うようなものはすでに存在している。
複数人参加型のプロジェクトで使わない事を前提にするなら、
自作ライブラリを作るなりなんなり勝手にすればいい。
ただし自作を自慢すんな、このスレで。はずかしいぞ。
0238デフォルトの名無しさん
NGNGあいたた! まさに>>237 の仕事そのもの
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG他人も同じ事するに違いないと思い込んでいる>>241が申しております。
0243デフォルトの名無しさん
NGNG結局、誰かがもう通った道をなぞってるだけじゃん。そりゃ楽だし面白いわ。
自分だけの新大陸を見つけよう。
0244210
NGNGmatrix作るのも悪くは無いが>>228くらいにとどめておくか
貧弱な2(or多)次元配列クラスが作れた、程度でいいと思う。
matrixで学習すべきはExpression Templateじゃないかと。
てことで誰か俺にExpression Templateを学習できる出来れば日本語のサイトを教えてくれ_| ̄|○
0245デフォルトの名無しさん
NGNG実は、コロンブスやマゼランは中国(明王朝)の探検団の作った地図を頼りに
新大陸に到達したという説が浮上している。
TBSの「世界ふしぎ発見」でやってたよ。マジレス。
0246デフォルトの名無しさん
NGNGファーストランナーだけ。ところが再発明といっても全く同じプロセスじゃないから新たな発明が生まれる。
0247デフォルトの名無しさん
NGNGそれはもしかして鄭和のことか?
0248デフォルトの名無しさん
NGNG載ってたな。というか、コロンブス以前にヴァイキングが行ってたのは間違いないらしいが。
0249デフォルトの名無しさん
NGNG0250245
NGNGそういえば、そんな名前が出てたかもしれない。
コロンブスの大陸到達時の文献に、
アメリカ原住民と明らかに肌の色が違う人々が他にいたと書かれている。
由来不明の古い灯台の遺跡が存在し、その設計寸法の最小単位が
中国で用いられていた単位と一致する。
などなど、色々番組で言ってたよ。
0251デフォルトの名無しさん
NGNG既に答えがわかってるもの以外人に相談しても答えられないだろ。再発明が嫌な奴はこのスレ
に来るなって琴田。
ところで、
数値計算するのに行列の演算ではなく操作というかインターフェースを提供してるだけ
のublasなんか使ってる椰子なんているのかね?実際の+/-/*以外の実際の演算は結局自分で
つくらにゃならんだろ?実数に限定するならnewmat の方がよっぽど便利
http://www.robertnz.net
0252デフォルトの名無しさん
NGNG市販品ではタイムが下がりますよ?
0253デフォルトの名無しさん
NGNGスポンジタイヤを紙やすりで削ってますか?
シャーシは肉抜きしてますか?
タミヤの電池使ってますか?
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNGオレの事かと思ってびっくりしたよw
0256デフォルトの名無しさん
NGNG否定する>>252のような痛いヤシがいたが、
また息を吹き返したようだな(w
0257デフォルトの名無しさん
NGNGお前は何もわかってないな
0258デフォルトの名無しさん
NGNGお前がな。相当に痛いよw
0259デフォルトの名無しさん
NGNGユーザーモードはすでにそれ自体がラッパーなのに、
それを自覚できない馬鹿のなんと多いことか。
0260デフォルトの名無しさん
NGNG無茶だなー
0261デフォルトの名無しさん
NGNG0262神
NGNG0263デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNGあれ、ここなんのスレだっけ
0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNGblitz風の行列の設定方法(A = 1,2,3,5,6;)が使いたいとか言い出すと結局自作せざるを得ない。
0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNG0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGC#が出来たから何か良いことあるんですかね?
0274デフォルトの名無しさん
NGNG0275デフォルトの名無しさん
NGNG0276デフォルトの名無しさん
NGNGつーかGW的な流れだね。
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNG新しい機能。こんなのはC++でもあっていいとオモタ。
俺はポインタ大好きなんで、明示的なポインタがないのは寂しいけど
-> がないのは確かに見やすいとオモタ。
ただ条件コンパイル指定の機能が弱いのと、
結局遅くてOffice作るには使えんかったというのはホントか?
少なくともデバドラは書けんが特にWin上の統合環境でVB/C++行き来しながら
アプリ書かんでいいのは楽ということらしい。・・・でいいんかな?
まぁ数値計算メインの椰子には用はないってことで。
0279デフォルトの名無しさん
NGNGでも組み込みやディジタル回路屋では全く話は別でC#のかけらもない。
0280デフォルトの名無しさん
NGNGスペック的にVS.netが動けるマシンじゃないのに開発してていらいらしたよ。
でも、コンパイル時にちょっと重いだけで一旦走り出せばそんなには気にならない。
C++の知識があれば習得は容易だけど、いろんな面でJavaの方が近いのはなんだかな・・・
0281デフォルトの名無しさん
NGNG「isspaceはワイド文字用のバージョーンでオーバーロードされている」というくだりがあるんだけど
確か、ctypeヘッダではisspace()は一つしか定義されてないし、それ以前に
Cの仕様のライブラリなんだから、オーバーロードされているはずないと思うんだけど・・・
誤訳かなんかと考えて宜しいでしょうか?
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGmonoってのが既にあるけど、adaやjavaまで手を広げたgccもサポートしそうだな。
0284デフォルトの名無しさん
NGNGオーバーロードというよりtemplate版だが<locale>にある。
Cライブラリ関数にオーバーロードが追加されているのは珍しくない。
strchrとか、absとか<cmath>の各関数とか。
0285デフォルトの名無しさん
NGNGサンクス。
0286デフォルトの名無しさん
NGNG#if〜#endif
は欲しいよ。
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG理想としてはほぼ影響ないように実装できるはず、という話になるが、
現状のコンパイラのほとんどにはそこまで期待できないので、
実測しないと答えはわからない。
0289デフォルトの名無しさん
NGNG禿げしくてのは内容にもよるが、影響はある。
例外処理を行う以上、そのオーバーヘッドは避けられない。
0290デフォルトの名無しさん
NGNGむしろ関数の入り口に throw() を書くように徹底すると
速度が上がると思うよ。
0291デフォルトの名無しさん
NGNG残念ながらそれも実測するまでわからない。
http://www.gotw.ca/publications/mill22.htm
http://www.boost.org/more/lib_guide.htm#Exception-specification
0292デフォルトの名無しさん
NGNGBCC5.6.4じゃあ逆に遅くなっちまった。
#include <iostream>
#include <boost/progress.hpp>
void func() {}
void func2() throw() {}
int main()
{
{
boost::progress_timer t;
for (int i = 0; i < 100000000; i++)
func();
}
{
boost::progress_timer t;
for (int i = 0; i < 100000000; i++)
func2();
}
}
0293デフォルトの名無しさん
NGNG普通遅くなるだろう。関数のケツでcatch(...){terminate();}するのと同じ処理が入るわけで。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNG0296質問者
NGNG素人目に見ると、func()は任意の例外を搬出し、func2() throw()は例外を搬出しない事が
保障されているので、catch(...)を挿入すべきはむしろfunc()を実行するブロックだと思えるのですが
その辺どうなっているのでしょうか?
0297デフォルトの名無しさん
NGNG規格嫁
例外を搬出しないことを保証するために、catch&terminateするんだって。
g++3でも有意の差がでるよ。throw()するほうが遅い。
0298質問者
NGNGprogress_timerじゃ差が分からんですね。
0299デフォルトの名無しさん
NGNG・func()のg++ -S結果
.globl func()
.type func(),@function
func():
.LFB2:
pushl %ebp
.LCFI0:
movl %esp, %ebp
.LCFI1:
subl $20, %esp
.LCFI2:
pushl $4
.LCFI3:
call operator new(unsigned)
leave
ret
0300デフォルトの名無しさん
NGNGfunc2():
.LFB4:
pushl %ebp
.LCFI4:
movl %esp, %ebp
.LCFI5:
subl $20, %esp
.LCFI6:
pushl $4
.LEHB0:
.LCFI7:
call operator new(unsigned)
.LEHE0:
leave
ret
.p2align 2,,3
.L6:
incl %edx
je .L3
subl $12, %esp
pushl %eax
.LEHB1:
call _Unwind_Resume
.p2align 2,,3
.L3:
subl $12, %esp
pushl %eax
call __cxa_call_unexpected
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG意味がないと思うなら使わなければいい。
C言語に意味がないと思うならアセンブリ言語を使えばいいというのと同じ。
0303デフォルトの名無しさん
NGNGオブジェクトのインスタンスを生成せずに直接使える。
Class::Method();
見たいな感じで。
0304デフォルトの名無しさん
NGNGどういう意味があるのか聞いているのですが。
0305デフォルトの名無しさん
NGNGCClass::Func();
こんな使い方が出来るのでは?
0306デフォルトの名無しさん
NGNGどういう意味があるのか聞いているのですが。
0307デフォルトの名無しさん
NGNGどういう意味があるのか聞いているのですが。
0308デフォルトの名無しさん
NGNGprintfみたいな関数と同じようにつかえるんですね。
よくわかりました。
ありがとうございました。
0309デフォルトの名無しさん
NGNGよし。
0310デフォルトの名無しさん
NGNGどういう意味があるのか聞いているのですが。
0311デフォルトの名無しさん
NGNGint count = 0;
while(count < 1) {
try{
・・・ここで入力
}
catch (NumberFormatException e) {
System.out.println("正しい入力をしてください");
continue;
}
count++;
}
のようなことをBorland C++でやりたいのですが、どのようにすればよいでしょうか
0312デフォルトの名無しさん
NGNGwhile(count < 1) {
try{
・・・ここで入力
・・・入力値チェック(エラーなら例外スロー)
}
catch (CHogeException e) {
puts("正しい入力をしてください");
continue;
}
count++;
}
0313301
NGNGお礼まで書き込まれて話が完了してる・・・・
>>303
ものすご端的で明快な回答どうもでした。
なるほど、インスタンス無しで使えるのは便利ですね。
やはりシングルトンにアクセスするために使うのがメインになるのかな?
0314311
NGNG0315デフォルトの名無しさん
NGNGテンプレート関係のコードでは結構使う。
例えば関数テンプレートの部分特殊化の模倣に使える。
ttp://www.tietew.jp/cppll/archive/3819
0316デフォルトの名無しさん
NGNG>ものすご端的
日本語は正確に書きなさい。
0317デフォルトの名無しさん
NGNGそこまで面倒見切れない。
どういう入力を期待していて、何を入力エラーにするかも書いてないし。
0318デフォルトの名無しさん
NGNGint型整数を期待してそれ以外と、範囲外をエラーとしたいです。
0319デフォルトの名無しさん
NGNG宿題スレへ(・∀・)カエレ!
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGうるせーばか!
0324デフォルトの名無しさん
NGNG/,.ァ、\
( ノo o ) )
)ヽ ◎/(.
(/.(・)(・)\
(/| x |\)
( ヽノ
ノ >ノ ヒタヒタ
三 しU
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGC経験者ならiostreamよりstdioで実装した方が有利ですかね
あとstringもほとんど使ってないっす
0327デフォルトの名無しさん
NGNG何に対して有利不利なのか文章からは不明だけど、
別の言語だと思った方が最終的には幸せになれると思うけど?
0328デフォルトの名無しさん
NGNGC経験者はstdioの方が使いやすいだろうけど、
それじゃいつまでたってもiostream覚えられん罠。
stringは使ったほうがいいと思う。単純ミスのバグ減らせるし
0329デフォルトの名無しさん
NGNGstringは、変なこだわりさえ持っていなければ使うだろう。C使いからみたらかなり便利。
0331デフォルトの名無しさん
NGNGiostream で使いたければ boost::format 使うよろし。
0332326
NGNG演算子のオーバーロードはなかなか面白いです
実行時のオーバーヘッドとかは気になりますけど
0333デフォルトの名無しさん
NGNGそう思うならガシガシ逆汗してオーバーヘッドがどんなもんか確認汁。
最近の人間はそれできない人多いから、Cしかできない爺の活躍する
場になるぞ。
0334デフォルトの名無しさん
NGNG急いで書いたら修飾がかぶった。ソマソ。
0335デフォルトの名無しさん
NGNG結論として、Cと比べてルーチン内に
CALL命令が沢山あるということですか
0336デフォルトの名無しさん
NGNG一般的な傾向としてはそうだね。ctor, dtor呼びが自動で入るわけだし。
ただ、callを出来る限り減らすことはできるし、やりようによっちゃ局所的にでCよりcall
回数を減らすことだってできる↓んだけど、そこまでできる人も解析できる人も僅かという話。
ttp://www.tietew.jp/cppll/archive/4252
ttp://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html
0337デフォルトの名無しさん
NGNGCしかできない爺もアレですが・・・
C++はかじったばかりですが、もう既に
C++の汎用的すぎるライブラリは、かなり抵抗あります
あのスマートなコーディングは魅力ですが
テキスト丸写しの簡単なテストプログラムでもiostream使うと
実行ファイルのサイズが凄いですね
0338デフォルトの名無しさん
NGNGしかもほとんど使われてないという。
0339デフォルトの名無しさん
NGNG0340デフォルトの名無しさん
NGNG> C++はかじったばかりですが、もう既に
> C++の汎用的すぎるライブラリは、かなり抵抗あります
俺はゲーム関係なんで、C++でスマートに書きつつ速度も稼がないとならんのだけど、
そういう関係じゃないならその抵抗感はひとまず捨ててしまったほうが良いのでは?
0341デフォルトの名無しさん
NGNG可能な場合に極力constを徹底しようとして壁に当たりました。
class A{
private:
char* ptr;
public:
A(char* p):ptr(p){}
void write(){*ptr=1;}
char read()const{return *ptr;}
};
void hoge(const char* foo)
{
char* bar = new char[10];
A normal_A(bar);
const A const_A(foo);
}
ここでnormal_Aは問題ないのですが、const_Aをread()のみ可能なように
成立させるにはどう書くべきでしょうか。
最初の初期化以外はクラスが変更されないことを保証する
A(const char* p):ptr(p)const{}
みたいなコンストラクタが書けるといいのですが。
もっとも、このようなコンストラクタが書けた所でptrがconstではないですけど。
0342341
NGNG0343デフォルトの名無しさん
NGNG現状でもむりやりなconst_castさえしなければ無問題に思うが?
0344341
NGNG即レスサンクス。
341のコードはconst_castしてないです。
そのままコンパイルしようとすると
const A const_A(foo);
の箇所でfooがconst char*なのに対してコンストラクタの宣言がchar*なので
エラーが出るはずです。これを
const A const_A(const_cast<char*>(foo));
と書けばエラーはねじ伏せることが出来ますが、間違えて
A const_A(const_cast<char*>(foo));
と、変数のconstを付け忘れてしまうとfooがconst char*にも関わらずwrite()出来てしまう事が問題になります。
0345デフォルトの名無しさん
NGNGclass A{
private:
char* ptr;
const char* cptr;
public:
A(char* p):ptr(p),cptr(0){}
A(const char* p):ptr(0),cptr(p){}
void write(){*ptr=1;}
char read()const{return (ptr ? *ptr : *cptr);}
};
つーかどういう文脈でこういうことがしたくなるのかわからんけど。
0346デフォルトの名無しさん
NGNG済まそうとすると、そういう羽目に陥るのではないかと予想。
0347341
NGNG参考になります。
実際は最適化されるので微々たるものでしょうけど
readする度に分岐するのが精神衛生上良くないですね。
> つーかどういう文脈でこういうことがしたくなるのかわからんけど。
こういうことをしないとなるとコピーコンストラクタでしょうけれど
リソースも入り得る場合、リソースは普通コピーしませんよね。
一度読んだらshared_ptrかなにかにして使いまわすと思うのですが。
0348デフォルトの名無しさん
NGNGなにをしたくてこのクラス書いてるのか教えてよ。
0349デフォルトの名無しさん
NGNGビットマップのクラスです。
通常はクラスがshared_ptrを用いてメモリの生成し、自由に中身を書き換えていくわけですが
リソースにも同じクラスを使いまわそうとしています。
また、方針としてクラスをコピーした場合には
ポインタが同じメモリを指すようにしています(そのためのshared_ptrですが)。
そこでリソースは極力constで扱いたいという考えです。
0350デフォルトの名無しさん
NGNG>リソースにも同じクラスを使いまわそうとしています。
これをやめたほうがいいに1000clock
0351デフォルトの名無しさん
NGNGもしかしたら全体から見ればリソースの持ち方などの
やっていることは間違っているのかもしれませんが、
狭い範囲で見るとあるポインタを保持するクラスに
constのポインタも渡せるように出来ないか、という話でして解決の糸口が無いものかと。
静的なリソースと動的に作ったものを合成したりするわけですから
constかそうでないかだけの違いでクラスを分けてしまうのも不便ですし。
0352デフォルトの名無しさん
NGNGclass FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) const {
const int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
const int i_;
const int f_;
};
こんな感じの計算をすると
FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
return h.i_;
(続く)
0353デフォルトの名無しさん
NGNGmovl $1, -8(%ebp)
movl $50, -4(%ebp) # <variable>.f_
movl $2, -16(%ebp)
movl $25, -12(%ebp) # <variable>.f_
movl $3, -24(%ebp)
movl $37, -20(%ebp) # <variable>.f_
movl $5, -32(%ebp)
movl $5, -28(%ebp) # <variable>.f_
movl $5, %eax
こういう感じの処理に展開されてしまいます。戻り値の5は
最終行でいきなり得られているんですが、その前の8行が
完全に無駄です。これ取り去る方法というか、取り去られる
ようなコードの書き方ってないでしょうか?
g++の3.3使用です。
0354デフォルトの名無しさん
NGNGVC6では
mov eax, 5
ret 0
になったけど。
0355デフォルトの名無しさん
NGNG0356デフォルトの名無しさん
NGNGうーんそうですか。サンスコ。
コンパイラによらずに5のmovだけにする方法ないですかねえ・・
templateとenumとか?(とするとスレ違いか)
0357デフォルトの名無しさん
NGNG-O2です。-O6でも一緒ですね。
ちなみに最適化しないともっと悲惨なコードになるです。
0358デフォルトの名無しさん
NGNG-O3にしないとインラインの展開しなかったのでは?
0359デフォルトの名無しさん
NGNGいや-O3でもだめです。というか、インライン展開はされてるんですよね
call命令はひとつもないし、結果の5がimmで書かれてるから。消去され
るべき余計なコードまで出力されちゃってるってだけで。
4乗ならまだ余計なコード罹れてても許せる範囲ですけど、もっと大きな数
になるとちょっとまずいです。
boost::mpl方面?を調べるべきでしょうか。
0360デフォルトの名無しさん
NGNG先頭のタブとか、インデントは 4つに置換しないか。
0361デフォルトの名無しさん
NGNG0362デフォルトの名無しさん
NGNGFixedPoint f(1, 50); // 1.50
return f.i_;
だけを
g++ -O9 -march=pentium4 -fomit-frame-pointer
で出しても一旦スタックに1.50を積み込んでるぞ。
0363デフォルトの名無しさん
NGNG0364デフォルトの名無しさん
NGNGVS.NETで試したらインライン展開すらされてないように思うんだけど
なんかコンパイルオプション間違ってるんかな??
0365デフォルトの名無しさん
NGNG漏れはアセンブラさっぱし分からんけど
↓みたいになる模様。VS 2003
PUBLIC_main
_TEXTSEGMENT
_mainPROC NEAR
moveax, 5
ret0
_mainENDP
_TEXTENDS
END
0366365
NGNGPUBLIC_main
_TEXT SEGMENT
_main PROC NEAR
mov eax, 5
ret 0
_main ENDP
_TEXT ENDS
END
0367364
NGNGありがとう。やはり漏れの勘違いだったみたい。
ちなみにそういうリストってどうやって出すの?
0368デフォルトの名無しさん
NGNG-S付けると出てこない?
0369デフォルトの名無しさん
NGNGつーか、2003ならプロジェクトの設定にまんまの項目があるし、
VC++6.0ならリスティングファイルがどうたらって項目。
まあ、マニュアルのコンパイラオプションの項目嫁と。
0370デフォルトの名無しさん
NGNG{
char c;
A(char arg): c(arg){}
void test()
{
cout << c << endl;
}
};
int main()
{
A<int> a('1');
A<string>* p = (A<string>*)(&a);
p->test();
}
のようにクラス内でテンプレート引数を使用しないとして
テンプレート的に違う型のポインタにキャストするのって
動作は保証されてますか?
0371デフォルトの名無しさん
NGNG吐いたコードを見てワロタ。
単に "operator * "を3回出力した後いきなり 5 を出力。コンスト
ラクタもoperator* も思い切り最適化されて影も形もなくなってる。
0372デフォルトの名無しさん
NGNG3回出力したなら影も形もあるのでわ?
0373デフォルトの名無しさん
NGNGテンプレート関係はtemplate総合スレで聞いたほうが良いと思われ
0374デフォルトの名無しさん
NGNGそれが、チョト見て下さい(隣国人風)。
FixedPoint f(1, 50); // 1.50
FixedPoint h = f * f * f * f;
00401130 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401136 push esi
00401137 mov esi,dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::_M_put_nowiden (407240h)]
0040113D push offset string "operator * " (405024h)
00401142 call esi
00401144 mov ecx,dword ptr [__imp__STL::cout (407230h)]
0040114A push offset string "operator * " (405024h)
0040114F call esi
00401151 mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401157 push offset string "operator * " (405024h)
0040115C call esi
std::cout << h.i_ << std::endl;
0040115E mov ecx,dword ptr [__imp__STL::cout (407230h)]
00401164 push offset _STL::endl<char,_STL::char_traits<char> > (401019h)
00401169 push 5
0040116B call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (407228h)]
00401171 mov ecx,eax
00401173 call dword ptr [__imp__STL::basic_ostream<char,_STL::char_traits<char> >::operator<< (40722Ch)]
0375デフォルトの名無しさん
NGNGこんな感じで。クラスをバラバラに分解し、計算できる所は
計算してしまって、残った部分だけインラインで並べている感じ。
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNGほんとだ。
すごいな。g++にゃこれは無理だ。
0378370
NGNG0379デフォルトの名無しさん
NGNG恐れおののいた。ICCだともっと凄いのかな。
gccでは何とかインライン化するものの、どうしても内部の
計算はそのまま残っていた。
0380デフォルトの名無しさん
NGNG人生の。
0381デフォルトの名無しさん
NGNGうん。C++のライブラリはできるだけダイナミックリンクにした
方が良さそうだ。
そうなると地鎮祭の「STLを使うと実行ファイルのサイズが
一気に10倍に!?」という言葉もまともに思えてくる。
0382デフォルトの名無しさん
NGNGicc for Linux ダウソしてみるわ…
0383デフォルトの名無しさん
NGNGこの書き方ならスタックに順番につむだろ。
& operator *=
を定義して、
h=f;
h *=f;
以下必要分だけ繰りかえしちゃどうよ?
0384デフォルトの名無しさん
NGNGオプティマイザの効率がどうこう言ってんじゃねぇよ。再帰的に
定義してるからスタックに積むんじゃねぇか。お前のおつむは機械以下か?アフォが。
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNGどこが再帰的なんだ?w
0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNGウスターじゃないソースは?
0389デフォルトの名無しさん
NGNGだいたいclass の i_,f_をconst指定してる忌みがよくわからん。
int i_, f_と変えただけで
int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint h = f*f*f*f;
}
は
main:
pushl%ebp
xorl%eax, %eax
movl%esp, %ebp
subl$56, %esp
andl$-16, %esp
call__alloca
call___main
movl%ebp, %esp
xorl%eax, %eax
popl%ebp
ret
0390デフォルトの名無しさん
NGNGnanananana ya know a stuck on you !
0391デフォルトの名無しさん
NGNGこれでやってみれ。
class FixedPoint {
public:
FixedPoint(int integer, int fractional = 0) : i_(integer), f_(fractional) {}
FixedPoint operator*(const FixedPoint& fp) {
std::cout << "operator * ";
int tmp = (i_ * 100 + f_) * (fp.i_ * 100 + fp.f_);
return FixedPoint( tmp / 10000, (tmp % 10000) / 100 );
}
FixedPoint& operator*=(const FixedPoint& fp) {
return *this = *this * fp;
}
int i_;
int f_;
};
int main()
{
FixedPoint f(1, 50); // 1.50
FixedPoint hh = f;
hh *= f;
hh *= f;
hh *= f;
std::cout << hh.i_ << std::endl;
}
0392デフォルトの名無しさん
NGNGおいおい
それ __main の方に本当の処理が入ってんだろ。g++のバージョンと環境は何よ?
すくなくとも漏れの環境ではconstを取り去るとまともに最適化されないようだ
0393デフォルトの名無しさん
NGNG全然だめポなんだけどg++ -Sするとどうなる?
0394デフォルトの名無しさん
NGNGわろた
0395デフォルトの名無しさん
NGNGg++(MinGW3.3.3)の出力。
ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1083458467
インライン展開はされているものの、メンバ関数の内容は最適化されて
いない。もっともこのプログラムではVC7.1もあまり最適化は効かなかった。
0396デフォルトの名無しさん
NGNG変なプログラムだなあ。
0397デフォルトの名無しさん
NGNG了解。最適化効いてない(コンパイル時計算になってない)わね。
0398デフォルトの名無しさん
NGNGg++ -S -fverbose-asm hoge.cpp したあと c++filt < hoge.s > hoge_.s で整形したほうが
ベターと思われ。あとこれ最適化何?-O2?
0399デフォルトの名無しさん
NGNG-O3。gccはだいたいこんなもんだよ。
0400デフォルトの名無しさん
NGNGリソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で
あとスピンコントロールの使い方も
0401デフォルトの名無しさん
NGNG何様?氏んだら?
0402デフォルトの名無しさん
NGNGまあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
0403デフォルトの名無しさん
NGNG>>400>>>402は偉く居丈高なので、答える必要はありませんよ〜。
質問の仕方という基本的な事を思い知らせてやりましょう。
0405デフォルトの名無しさん
NGNG隠す必要無いですもんね。
0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG誰も答えられないんだよ
0411デフォルトの名無しさん
NGNG0412デフォルトの名無しさん
NGNGよって409の勘違い。
constにするのはメンバだろうが普通の変数だろうが同じでは?
間違えて書き換えたくない場合や変更してはいけないことを他人に明示したい場合じゃないの?
0413デフォルトの名無しさん
NGNG×他人に
○コンパイラに
0414デフォルトの名無しさん
NGNG荒らしてしまって申し訳ありませんでした
>>404
ありがとうございます
もうちょい調べてみます
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNGというか、そもそもスレ違いなので、APIスレで聞いたら?
0418デフォルトの名無しさん
NGNGなんだこのやろう!!!!!!!
0419デフォルトの名無しさん
NGNG死ねば?
0420デフォルトの名無しさん
NGNG非MFC環境でDateTimePickerに時間を設定する方法
リソースには貼り付けれるけど、表示時間を自由に変更できません
DateTimePickerクラスが使えないし、でもシステムの時間を書き換えるのは却下で
あとスピンコントロールの使い方も
0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNGいきなりキレるのは馬鹿丸出しですよ(^^)
まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)
まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)
まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
402 デフォルトの名無しさん sage 04/05/02 17:09
いきなりキレるのは馬鹿丸出しですよ(^^)
まあ、あなたじゃうまく隠して生きるのは無理そうですけど(^^)v
0423デフォルトの名無しさん
NGNG0424デフォルトの名無しさん
NGNGいま「プログラミング言語C++第3版」読んでるんですけど、
§13.2(pp. 386)に書いてある
"文字列の定義は、文字をコピーをできるといったごくわずかの内容から構成されている"
ってどういう意味なんでしょう。
0425デフォルトの名無しさん
NGNGThe definition of a string relies on the fact that acharacter can be copied, and littele else.
のこと?コピーできるとかの条件をみたすならそれはstringの要素になりうる、っていう話の
まえふりじゃないの?
0426デフォルトの名無しさん
NGNG> でもgccではこのconst指定をはずすとまともなコードはきますよ。
だから、 誤解だって。
0427デフォルトの名無しさん
NGNGだから誤解じゃないよ。-Sつけて確認してみろ。
0429デフォルトの名無しさん
NGNG389は嘘だよ?
0430デフォルトの名無しさん
NGNG糞かお前は。メンバ変数のconst削除した場合。
FixedPoint h = f*f*f*f;
がどう展開されるかは、とっくに>>389に示されてるんだよ。
>>353の何回もpush繰り返すコードとは明らかに違うだろうが。
アセンブラも読めない知障は死ねよ。
0431428
NGNGったく・・・・・・。
mainにreturn文がないから0を返却してる。
最適化でfとhは綺麗さっぱり消えている。
だからなにもしてないように見えるだけ。
アセンブラ読めないのは お・ま・え☆
ったく糞が。
0432デフォルトの名無しさん
NGNGワロタ
0433デフォルトの名無しさん
NGNGここまでのネタ職人の仕事ぶりのまとめ
http://cgi28.plala.or.jp/ll/lll/img20040502212012.jpg#pc5.2ch.net(元画像)
http://ahiru.zive.net/joyful/img/1095.mpg#pc5.2ch.net(元動画)
http://fetish-onsen.com/cgi/upload/source3/No_2179.jpg#pc5.2ch.net(一塁が観客席側に移動)
http://up.nm78.com/data/up004929.jpg#pc5.2ch.net(一塁が本塁側に・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2181.jpg#pc5.2ch.net(一塁手が観客席側に・・・)
http://up.nm78.com/data/up004948.jpg#pc5.2ch.net(神隠し・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502214930.jpg#pc5.2ch.net(一塁が分裂して・・・)
http://a.jmpd.com/upload/show_img.php?pid=946-A&db=hige1128&type=2(飛脚・・・)
http://fetish-onsen.com/cgi/upload/source3/No_2183.jpg#pc5.2ch.net(一塁がジャンパイアの手元・・・)
http://sumire.sakura.ne.jp/~hatomune/cgi-bin/imgboard/img-box/img20040502224028.jpg#pc5.2ch.net(ファミコンで再現・・・)
http://www.chugoku-np.co.jp/Carp/2003/Cs03060501.html(関連ニュース)
0434デフォルトの名無しさん
NGNG「環境によるだろ」
みたいなw
0435デフォルトの名無しさん
NGNGVC++は最強すぎるし。
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNG0438デフォルトの名無しさん
NGNG0439424
NGNGサンクスです。
よく分かりました。
私が読んでるのは訳書なんです。
日本語がひどいです。
誤)2つの補い合う16ビット整数でintを表現するマシンでは
正)16ビットの2の補数でintを表現するマシンでは
とか...
0440デフォルトの名無しさん
NGNGicc が最強 > gcc3 >= MVC
ってところだな。
0441デフォルトの名無しさん
NGNG何頁?
0442デフォルトの名無しさん
NGNGstring の定義はコピーできるってこととほんのわずかのほかのことに依存している。
0443デフォルトの名無しさん
NGNG意味はコピーできることが一番大事で、それ以外のことはささいなこと
っていうことじゃないの?
0444デフォルトの名無しさん
NGNG> little はもうちょっと否定的につかった方がいいかな?
もっと否定的で「ほとんど〜ない」っつーぐらいに訳すのが一般的。
string の定義は、ほぼ (sting を構成する要素である) 文字が複製可能であるという
事実のみに依存している。
0446デフォルトの名無しさん
NGNGこういう訳語に相当するのはonlyだよ。and little else を無視してるな。
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG0450デフォルトの名無しさん
NGNGほぼ文字
こういう形容の仕方より
ほぼ依存している
とするのがbetterだろ?
0451デフォルトの名無しさん
NGNG0452デフォルトの名無しさん
NGNG昔そこをみたとき掲示板に痛い書き込みがあったなーと思いながら
いってみたらまだあった
0453デフォルトの名無しさん
NGNGどれさ
0454デフォルトの名無しさん
NGNG非終端子
0455デフォルトの名無しさん
NGNG> >>428
> 糞かお前は。メンバ変数のconst削除した場合。
> FixedPoint h = f*f*f*f;
> がどう展開されるかは、とっくに>>389に示されてるんだよ。
> >>353の何回もpush繰り返すコードとは明らかに違うだろうが。
> アセンブラも読めない知障は死ねよ。
>>431
> >>430
> ったく・・・・・・。
> mainにreturn文がないから0を返却してる。
> 最適化でfとhは綺麗さっぱり消えている。
> だからなにもしてないように見えるだけ。
> アセンブラ読めないのは お・ま・え☆
> ったく糞が。
0456デフォルトの名無しさん
NGNG0457山本五十六
NGNGC++は時代遅れなんだ、と
0458デフォルトの名無しさん
NGNGでは逆に聞くが、時代に沿った言語とは?
まさかC#なんて言うなよ。
0459デフォルトの名無しさん
NGNGそれからD言語というのも無しだ。
0460デフォルトの名無しさん
NGNG0461デフォルトの名無しさん
NGNGC#は時代に沿ってないの?
つまり、Windowsがなくなると思ってるってことになるけど
君は本気でそう思っているわけ?
0462デフォルトの名無しさん
NGNGそうは言ってない。WinFX APIを備えたLongHornが主流になれば
最先端だと言えるかもしれないが、今の段階では糞重たくてC++
より遅くて効率が悪い言語としか言えない。
そういう俺も仕事で無理矢理C#をちまちま触っているが、まだ
まだだねえ。この言語。次のバージョンに期待しよう。
0463デフォルトの名無しさん
NGNG〓〓〓〓〓〓〓〓〓〓 終了 〓〓〓〓〓〓〓〓〓〓
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNGプログラマやってること自体恥じろ!タクシー運転手と同じ人生の掃溜め職業ってことを自覚しろ!
0470デフォルトの名無しさん
NGNGタクシー運転手に失礼
0471デフォルトの名無しさん
NGNGclass B { int b1; char b2[10]; };
class C {int c1; char c2[10]; }; (実際には同じパターンとは限らないですが。)
class All {
A a;
B b;
C c;
void init();
}
とかやって、init()に渡す引数の型によって、その型に応じてclass Allの
特定のメンバの初期化をしたいのですが、一つには、各引数を取った
時のinit()メソッドを各々書けばいいのですが、メンバの数が多くなった時
にずらーっとinit()が並んでしまうので、もっとスマートにかけないでしょうか?
0472デフォルトの名無しさん
NGNG0473デフォルトの名無しさん
NGNGABCに共通のスーパークラスを作って、そのクラスでvectorに放り込んでおくとかは?
初期化はループの中で順次にやる。
0474473
NGNG引数をフラグにして、どのメンバを初期化するか選択するということ?
もしそうなら、テーブルかな・・・。
0475デフォルトの名無しさん
NGNG0476デフォルトの名無しさん
NGNG0477473
NGNGどういう風に書いたら、冗長になるのか提示してみそ。
0478471
NGNG>>475
例えば、main で
All database;
A default;
default.a1 = 0;
memset(a2,0,sizeof(a2));
とかやって、
database.init(&default);
とやると、Allクラスのdatabaseインスタンスのメンバー a の部分が指定した値で初期化されるという
感じです。
0479デフォルトの名無しさん
NGNG残りのフィールドは大量にメンバとしてあるけど初期化しないわけ?
0480デフォルトの名無しさん
NGNGmemset萎えー
0481デフォルトの名無しさん
NGNG0482471
NGNG別途コンストラクタで全体の初期化はしますが、databaseの更新途中で、
特定のメンバーだけデフォルト値に戻したいんですが。
>>476
むむ、なるほろ
>>480
memsetじゃ駄目なんでしょうか?
0483デフォルトの名無しさん
NGNGAll::init()で特定のメンバにデータをセットする、っていう仕様じゃだめなのか?
0484デフォルトの名無しさん
NGNGそれなら、ABCそれぞれにデフォルト値を別途持たせておいて、
A::setDefault() で、デフォルト値に戻すとかは?
0485デフォルトの名無しさん
NGNG0487デフォルトの名無しさん
NGNG誰もが知ってる電気メーカに勤めてるが、確かにそれ言えてるな。ソフト担当させるのは電気系以外の専攻者か
電気系なら学卒者、ただ、後者の場合は将来のソフト部門の責任者として育成するけど。それ以外はキーマンとして
は期待できないから兵隊としてソフト担当にアサインする。
0488デフォルトの名無しさん
NGNG> 誰もが知ってる電気メーカに勤めてる
0489デフォルトの名無しさん
NGNG出来ないんですけど、どうしたれいいんですか?
0490デフォルトの名無しさん
NGNG0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG> 出来ないんですけど、どうしたれいいんですか?
タレ(・∀ (ry
0493デフォルトの名無しさん
NGNG管理職:奴隷の雑用係
技術者なんてそんなもん
0494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG自分が何をしたかスクリーンショットを交えてどこかにウプしろ。
それから、ソープに逝って女を2-3人抱いて来い。
話はそれからだ。
0497デフォルトの名無しさん
NGNGそういうのはプロセスが存在しない職場ともいう。
どちらが幸せかは謎。そういう職場は往々にしてデスマ(ry
0498489
NGNG0499デフォルトの名無しさん
NGNG氏ね
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNG多分ネタだと思うが、一応マジレスすると、スレ違い。
0502デフォルトの名無しさん
NGNG0503デフォルトの名無しさん
NGNG( ´,_ゝ`)プッ (<=先読み)
0504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNG同じ基底クラスを継承して、基底クラスへのポインタをvectorに格納するというの
ぐらいしか思いつかないのですが。
例外安全の関係でメモリの管理が大変になりますし、継承階層が
一つ増えてしまいます。
0507デフォルトの名無しさん
NGNGhttp://www.kmonos.net/alang/boost/classes/any.html 使ったら?
> 例外安全の関係でメモリの管理が大変に
ここもちっと詳しく教えて。
0508デフォルトの名無しさん
NGNG> 例外安全の関係でメモリの管理が大変になりますし、
ふつー boost::shared_ptr とか使う。
0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNG0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGマジレスするとただのリーマン風情はム板に逝ってくれ。
迷惑。
0514デフォルトの名無しさん
NGNGtypo。
マ板な。
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518ただのリーマン風情
NGNG0519デフォルトの名無しさん
NGNG0520デフォルトの名無しさん
NGNGシッ!シッ!
0521デフォルトの名無しさん
NGNGみなさんはどう思いますか?
0522デフォルトの名無しさん
NGNGできるけど?
0523デフォルトの名無しさん
NGNG//もしかしてやり方間違えてますか?
//↓みたいなの
func01(int&a[]){
}
main(){
int a[100];
func01(a);
}
0524522
NGNGint func01(int(&a)[100]){}
template<unsigned N>
int func02(int(&a)[N]){}
main(){
int a[100];
func01(a);
func02(a);
}
このどっちかでどーぞ。
0525デフォルトの名無しさん
NGNG配列を参照渡しすると、template引数に配列のサイズを受け取る
事が出来て、便利な事がある。普通のポインタ渡しだと配列の
大きさに関する情報が変換時に失われてしまう。
0526524
NGNG0527デフォルトの名無しさん
NGNGおぉそんな方法があるんですね。
templateはまだ勉強してないんで分かりませんでした。
thxでした。ノシ
0528デフォルトの名無しさん
NGNG& と [] では []のほうが結合優先だから括弧で & を先に結合させる
0529デフォルトの名無しさん
NGNGって書いたときって、
class D : private B {};
と等価でしたっけ?
おしえてください。
0530デフォルトの名無しさん
NGNG0531デフォルトの名無しさん
NGNGあんたの方が、はぁ?じゃないか。
固定長配列へのポインタなら呼び出される側が配列のサイズを知ってる事になるし、
そうでないのなら配列のサイズを渡す手段はないぞ。
0532デフォルトの名無しさん
NGNGあ、こないだはtemplateスレか。
どちらにしろウザ。
0533デフォルトの名無しさん
NGNG同じ。
0534デフォルトの名無しさん
NGNGサンポスペ
0535デフォルトの名無しさん
NGNG>>524にあげられてるテンプレート引数使えば配列へのポインタ使っても同じだろ?
というか(*a)[N}の意味知ってるよね?
0536デフォルトの名無しさん
NGNG憶測でものを言うな!
やってみてから書いたらどうなんだ。
0537デフォルトの名無しさん
NGNGこの辺りから自信のなさが感じられる。
0538デフォルトの名無しさん
NGNG> >同じだろ?
>
> この辺りから自信のなさが感じられる。
昔のOOスレのジョソを思い出した。
お前らスライムか?の。
0539デフォルトの名無しさん
NGNGint func01(int(*a)[100]){}
template<unsigned N>
int func02(int(*a)[N]){}
main(){
int a[3][100];
func01(a);
func02(a);
}
0540デフォルトの名無しさん
NGNG> ホレ。わざわざ書かすな!
スゲーワラタ。[3]ってなんだよ[3]ってw
0541デフォルトの名無しさん
NGNGいいんだが。
int func01(int a[100]){}
template<unsigned N>
int func02(int a[N]){}
main(){
int a[100];
func01(a);
func02<100>(a);
}
0542デフォルトの名無しさん
NGNGわざわざ<100>って書きたい香具師は少ないと思うが…
0543デフォルトの名無しさん
NGNGint (*pa)[100]=(int(*)[100])a;
func01(pa);
func02{pa);
でもいいぞ。
0544デフォルトの名無しさん
NGNG荒らしは他所でやってよ。
0545デフォルトの名無しさん
NGNG0546デフォルトの名無しさん
NGNG0547デフォルトの名無しさん
NGNGそもそも初心者が勘違いしたレス書くの自体迷惑なんだし。
0548デフォルトの名無しさん
NGNG0549デフォルトの名無しさん
NGNGtemplateスレまで荒らさないで下さい。
0550デフォルトの名無しさん
NGNG大抵の場合、配列サイズ >= 処理サイズであればいいだろ。むしろ関数側で勝手に処理サイズを
決められてしまうことの方が迷惑なことの方が多いだろ?この場合は
int func01(int *a, size_t N ){}
main(){
int a[100];
func01(&a{5], 30);
}
一番シンプルでいいやろ?男は黙ってポインタ使え。処理サイズは自分で責任を持て!
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNGmain(){
vector v(100);
func01(v);
}
俺はこれが一番シンプルで安全だと信じて疑わないから、
>>521以降の、テクニックを駆使したいろんな渡し方は
覚えようとも思わん。
0553デフォルトの名無しさん
NGNG0554デフォルトの名無しさん
NGNGさっきから提示されてるソースコンパイルすると
エラー発生しまくりなんだよなぁ。
漏れのVCが可笑しいのか。
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNG0557デフォルトの名無しさん
NGNG> 一番シンプルでいいやろ?男は黙ってポインタ使え。処理サイズは自分で責任を持て!
ならC++使うなよw
一生C爺やってろ
0558デフォルトの名無しさん
NGNGお前はCスレから出てくるなw
0559デフォルトの名無しさん
NGNGポカーン
0560デフォルトの名無しさん
NGNG言ってるだろ。リングバッファこさえてみろって。
逆にハードウェアに密着したことをする必要がなけりゃJavaなりC#なり使え。
0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG一体なにがうれしくてvectorなんか使うの?
0563デフォルトの名無しさん
NGNG> でもlistやbitsetはうれしいが、教科書通りにvector使う椰子いたんだ。
> 一体なにがうれしくてvectorなんか使うの?
煽りにマジレスするけど、
そういうときはまず、自分が何がうれしくなくてvector使わないのか書かないと。
0564デフォルトの名無しさん
NGNGハァ!!!!????
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGエンディアンをアプリベースで自動判定したいんですがどうやったら委員ですか?
0567デフォルトの名無しさん
NGNGchar* pn=&n;
if (1==*pn){ /*リトル*/}
else{/*ビッグ*/}
0568デフォルトの名無しさん
NGNG0569デフォルトの名無しさん
NGNGなんで?
0570352
NGNG>>352の件、結局g++ではうまく最適化されないことを皆さんのご協力で理解したんで、
別の方法(>>359で書いたような方向)で書き直してみました。
一応貼っておきます。どうですかね....
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1083458467&res=3&fi=no
g++/icc/vc++で動作確認しました。どのコンパイラでもコンパイル時計算になりました。
なお、誤差はひどいわ、すぐオーバーフローするわで実用性はゼロですw
こういう種類のコードは初めて書いたんでアホな事沢山やってるかも。
0571デフォルトの名無しさん
NGNGchar *pn = (char *)&n;
0572デフォルトの名無しさん
NGNGtypedef union {
int i;
char c[4];
} U;
U u;
u.i=1;
if(u.c[0]==1) {
//リトル
} else {
//ビッグ
}
0573デフォルトの名無しさん
NGNG激しくワラタ
0574デフォルトの名無しさん
NGNG> なんで?
http://www.radiumsoftware.com/0304.html#030408
とか。
0575デフォルトの名無しさん
NGNG駄目ならmemcpy等は書けない。
0576デフォルトの名無しさん
NGNG等は、Cネイティブで書けない
0577デフォルトの名無しさん
NGNGあれあれ?信号処理の世界では、普通2の補数FixedPointっていうのは
絶対値として1以下を主に扱って、
16bitの場合なら
0x7fff = 1-ε
0x0000 = 0
0x8000 = -1
と対応させることなんだけどね。で、大きさが1を越える部分に
3〜8bit程度をextend bitとして持たせるのが一般的。
±5VのA/Dを±1Vに規格化して扱うといえばイメージしてもらえるかな?
0578570
NGNG> あれあれ?信号処理の世界では、普通2の補数FixedPointっていうのは
あースミマセン、FixedPointって語はあまり考えずに使ってしまいました。
http://lists.boost.org/MailArchives/boost/msg34685.php あたりを見たの
だったかな。間違ってそうですねw
自作のクラスが抱えてる整数に四則演算してどこまで最適化かかるか
見たかっただけ、ということでご勘弁を(苦笑
0579デフォルトの名無しさん
NGNGできるだけぎりぎりまで32bit+extend bitで計算しないと精度は無茶苦茶になるよ。
例えば
Σa(i)b(i)
の計算で32bit精度がほしいのはa(i)b(i)の部分|a(i)|<=1,{b(i)}<=1だから
1以下の制度として32bitが必要。そしてextend bitが必要なのはそれらを
加算Σ
どっかに固定小数点クラスは転がってると思うけど、一応DSPの仕様を確認することを勧めるな。
0580デフォルトの名無しさん
NGNG>見たかっただけ、ということでご勘弁を(苦笑
あ、そういうこと?了解。実際に仕事とか学生実験でもいきなりDSPで書くより
C/C++でシミュレートしてからというのが普通のアプローチで、それをしようと
してたのかな?と思ったもので・・
0581デフォルトの名無しさん
NGNG0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG> 同一のメモリ領域に対して2種類の型でアクセスすることを禁じているようだ。
それでは共用体が存在し得なくなるが。
0584デフォルトの名無しさん
NGNG問題の性質上、厳密に ISO C 規格に従って (未定義なしで)
エンディアンを判別することは難しくない?
> If the value being stored in an object is accessed from
> another object that overlaps in any way the storage of the
> first object, then the overlap shall be exact and the two
> objects shall have qualified or unqualified versions of a
> compatible type; otherwise, the behavior is undefined.
オブジェクトに格納されている値が、任意の方法で第1のオブジェクトの
ストレージにオーバーラップする別のオブジェクトからアクセスされる場合、
オーバーラップは正確であるべきである。また、2つのオブジェクトは、
互換性をもつタイプの資格があるか無条件のバージョンで行う。
そうでない場合は、未定義である。
0585デフォルトの名無しさん
NGNG共用体経由は問題なしと規格の別のとこに書いてあるよん。
0586デフォルトの名無しさん
NGNGclass ShowAdd
{
private:
int Add (int num1, int num2){
return num1 + num2;}
public:
void Show (int num1, int num2){
printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
};
int main(void)
{
ShowAdd showAdd;
showAdd.Show (5, 10);
//ShowAdd::Show (5, 10);
return 0;
}
このクラスは、関数をまとめる機能中心で、
構造体の機能は持たない(publicメンバー変数が無い)ので、
コメントの部分みたいに宣言をせずにクラスを使いたいのですが、
できるならやり方を教えてください。
0587デフォルトの名無しさん
NGNG#include <cstdio>
class ShowAdd
{
private:
static int Add (int num1, int num2){
return num1 + num2;}
public:
static void Show (int num1, int num2){
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
};
0588デフォルトの名無しさん
NGNGメンバにアクセスする必要がないものをクラスのメンバに入れるなよ。
名前空間にでも入れとけ。
0589デフォルトの名無しさん
NGNGありがとうございます。できました。
staticを使うということは、クラスを宣言しないで使うやり方は
普通は余りやらないのでしょうか。
また、こういう関数をまとめるだけの時は別のものを使うのでしょうか。
0590デフォルトの名無しさん
NGNGAdd()の事でしょうか。詳しくお願いします。
0591デフォルトの名無しさん
NGNG> staticを使うということは、クラスを宣言しないで使うやり方は
> 普通は余りやらないのでしょうか。
Javaだと「関数」が作れないからよくやるけどね。三角関数とかさ。
> また、こういう関数をまとめるだけの時は別のものを使うのでしょうか。
588が言ってるのは下記
namespace /* anonymous */
{
int Add (int num1, int num2){
return num1 + num2;}
}
namespace ShowAdd
void Show (int num1, int num2){
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
}
0594デフォルトの名無しさん
NGNG> >>591
> ありがとうございます。思ったようにできました。
>
> 後、Addをprivateみたいにしたいのですがどうすればできますか。
伝わらなかったか。
[foo.h]
namespace ShowAdd {
void Show(int num1, int num2);
}
[foo.cpp]
#include <cstdio>
namespace
{
int Add (int num1, int num2){
return num1 + num2;}
}
namespace ShowAdd {
void Show(int num1, int num2) {
std::printf ("%d + %d == %d\n", num1, num2, Add( num1, num2) );}
}
0595デフォルトの名無しさん
NGNG#include <foo.h>
int main(void)
{
ShowAdd::Show (5, 10);
return 0;
}
とすればよろし。
0596デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNGとしたり、クラスの意味も分からない香具師が出没してる・・・・・
GWもあと2日だぜ。せいぜい暴れてくれ。
0600デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1082182233/
こういうスレもあるので、こっちの方が回答を得られやすいかもね。
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNG{
unsigned int b :5;
unsigned int g :6;
unsigned int r :5;
};
これのサイズ 5+6+5 で 16bit だから2バイトだろうと思ってたんですが
sizeof(PIXEL16_60K)で調べてみたら 4 とでました
これって2バイトにする方法はありませんか?
環境は Win2K Visual C++6.0 です。
0605デフォルトの名無しさん
NGNG#pragma pack(1)
0606デフォルトの名無しさん
NGNGint じゃなくて short にする
0607デフォルトの名無しさん
NGNGshortにしてもだめだろ。
その前に仕様的にはintにしとかないと未定義。
0608デフォルトの名無しさん
NGNGいいから藻前はCスレに(・∀・)カエレ!!
0609デフォルトの名無しさん
NGNGCのコードし掛けないお前にC++を語る資格なし。
0610デフォルトの名無しさん
NGNGそんなDQN、いくらでもいそうだが。
0611デフォルトの名無しさん
NGNG>Cのコードし掛けないお前に
頭大丈夫か?それとも日本語が不自由な知障か。( ´,_ゝ`)プッ
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNGCのキャストなんかC++のキャスト覚えたら危なくて使って
られねーよ。あっそうか、君はC++については全くの素人
だったね。これは失礼。
0614デフォルトの名無しさん
NGNG型に依存せずにアドレス指定できることは当然だしC++もwarningは出すが禁止してない。
ポインタいじることにびびってるやつはC#がお似合い。
ごめん、触ろうとする前にその知識もなかったんだね。
0615デフォルトの名無しさん
NGNG他行ってやりなさい。
0616デフォルトの名無しさん
NGNG>C++もwarningは出すが禁止してない。
まさに君のような馬鹿のためにこのような措置が取られているのを
知らないのかい?
迷惑だから早く氏んで下さい。
0617604
NGNG試しに1ビットのメンバしかない構造体を作っても4バイト。
困った。。。
0618デフォルトの名無しさん
NGNG逆にこの機能がなくなればハードウェア開発にC++は使えないことも
わからないのか馬鹿が。
0619デフォルトの名無しさん
NGNGfloatからintとか、longからcharにキャストしたら・・・
const_cast、static_castを使おう
でも、結構ウザいからCキャストも結構使うな・・・
printf()も使いまくる。cin/coutは使いにくい
>>617
#pragma pack(push,1)
...
#pragma pack(pop)
0620デフォルトの名無しさん
NGNG{
unsigned int b1 :5;
unsigned int g1 :6;
unsigned int r1 :5;
unsigned int b2 :5;
unsigned int g2 :6;
unsigned int r2 :5;
};
とでもしとけば?あるいは、C++スレなんだから、
class PIXEL16_60K{
unsigned short rgb;
void r( char r ) { ... }
void g( char g ) { ... }
void b( char b ) { ... }
};
とか。
0621デフォルトの名無しさん
NGNG> const_cast、static_castを使おう
const_cast?
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNGreinterpret_castがあれば困ることはないんじゃ?
0624デフォルトの名無しさん
NGNG#define RGB16_R(rgb) (unsigned char)((((rgb) >> 10) & 0x1f) << 3)
#define RGB16_G(rgb) (unsigned char)((((rgb) >> 5) & 0x1f) << 3)
#define RGB16_B(rgb) (unsigned char)(((rgb) & 0x1f) << 3)
unsigned short rgb;
...
unsigned char r = RGB16_R(rgb);
unsigned char g = RGB16_G(rgb);
unsigned char b = RGB16_B(rgb);
でいいんでわ?
オーバーヘッド嫌だぽ
>>621
const int abc = 12345;
int a = const_cast<int>(abc);
0625デフォルトの名無しさん
NGNGいや、1行目と関係ないじゃないかって思って。
0626デフォルトの名無しさん
NGNGconst intからintには暗黙の変換があるぞ。
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNGなにが困るんだ?
15bitづつパックされてるわけではないだろ?16bitごとじゃないのか?
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGstatic_cast<abc>()なんて長ったらしい書式をぐちゃぐちゃ書いてるのか。
0631デフォルトの名無しさん
NGNGみだりにキャストするもんじゃありません! という戒めのために、
あのように長ったらしい書式なのですよ。と俺は思ってる。
0632マイク ◆yrBrqfF1Ew
NGNGぐちゃぐちゃなんか書いてねーよ。
0633デフォルトの名無しさん
NGNGオレそういうとこは殆どC構文になっちゃうなあ
0634デフォルトの名無しさん
NGNGまた出たよ、脳内男。
0635マイク ◆PbfAC65QoU
NGNG0636634
NGNG許してくれ。ついでにポインタもよくわかってないんで誰か教えてくれ。
0637634
NGNG0638デフォルトの名無しさん
NGNGここはC++スレだからw
Cならこっちでね。
http://pc5.2ch.net/test/read.cgi/tech/1083651280/l50
って、Cも分からないのか...じゃぁこっちへでも。
http://pc5.2ch.net/test/read.cgi/tech/1034505166/l20
0639デフォルトの名無しさん
NGNGhttp://www2s.biglobe.ne.jp/~thoikuen/
0640デフォルトの名無しさん
NGNG0641デフォルトの名無しさん
NGNG0642デフォルトの名無しさん
NGNGさもありがたそうに披露するのは目障りだ。
それともCスレで間違った発言をして叩かれたくやしさを
晴らしにこのスレに来ているのか。それだったら場違い。
君がPGに向いていないはっきりとした証拠だから早めに
転職して下さい。
0643デフォルトの名無しさん
NGNGさもありがたそうに披露するのは目障りだ。
それともCスレで間違った発言をして叩かれたくやしさを
晴らしにこのスレに来ているのか。それだったら場違い。
君がPGに向いていないはっきりとした証拠だから早めに
転職して下さい。
0644デフォルトの名無しさん
NGNG0645デフォルトの名無しさん
NGNGオーバーヘッド?最適化のかかり具合にもよるけど、
ほとんどインライン展開されると思うけど。
0646デフォルトの名無しさん
NGNGワロタ。お前PGってプログラマのことかい。下らん職業にエベレストより高いプライド持ってるんだねぇ。
をー!よちよち。
0647デフォルトの名無しさん
NGNGちょっと、低脳さんはもういいでつから。
0648デフォルトの名無しさん
NGNGつーかマ板でやれよ。
0649デフォルトの名無しさん
NGNG喪前はここの社員だろ? http://www.pg.com
0650デフォルトの名無しさん
NGNG不幸な奴だな。自分の職業にプライドも持てんとは・・・・・
どうせお前は「俺は本当ならばもっとエリートコースを歩いて
いるはずだ。こんなくだらん仕事をしているはずがない」とでも
勘違いしているだけだろう。自分の能力のなさを人のせいにして
一生そうやって社会を恨み続けて生きるんだな。
0651デフォルトの名無しさん
NGNG残念だったな。プログラマだけがこのスレに来てると思ってる時点でバカなんだよ。
プログラマ -> 他に何もできない技術屋(エンジニアといえる奴らかどうかわからんが)だろ?
プログラマなんて呼ばれることを恥と思えよ。
0652デフォルトの名無しさん
NGNGマ板でやれよ。
0653デフォルトの名無しさん
NGNGC++スレなんか見るんだ?
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNGアホか。俺だってSEなんだが。まあいいや。お互いの顔も知らず
何をやっているかも全く知らずにこうやって言葉遊びを繰り返して
いるだけじゃ埒があかないね。いつまでもそうやってなさい。
>>652
正直すまんかった。刺々しくて香ばしい香具師がいるもんだから
つい相手をしたくなっちまった。普段ならバカバカしくて「また痛い
香具師がいるなあ」ぐらいで反論すらしないが。GWだし(w
0656なんちゃってSE
NGNG0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG0659デフォルトの名無しさん
NGNG0660デフォルトの名無しさん
NGNG相当頭カッカしてるな(w
typoするなんて(w
0661デフォルトの名無しさん
NGNG頭カッカするも何も、俺>>646からしか読んでないし。
で、お前がアホっぽかったからいじめただけ。
0662デフォルトの名無しさん
NGNG俺もお前がアホっぽかったからいじめただけ。
0663デフォルトの名無しさん
NGNG0664デフォルトの名無しさん
NGNG( ‘∀‘)オマエガナー
0665デフォルトの名無しさん
NGNG↓ではC++の話に戻ってください。
0666デフォルトの名無しさん
NGNG│ ヽ( ,_ノ`)ノ 残念 それは私のおいなりさんだ
│ へノ /
└→ ω ノ
>
0667デフォルトの名無しさん
NGNG0668デフォルトの名無しさん
NGNGつかPGの能力を判断してこき使うSEの能力こそが大事なわけだが。
0669デフォルトの名無しさん
NGNGここらでちょっとまとめてみる。
多分、unsigned short にしないと 2 バイトにならないと思うが unsigned short の
bit-field が使えるかは規格上保証されない。
実装で規定されていればその実装では使える。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/4)
Cygwin 上の gcc では unsigned short で 2 バイトになった。
ただ漏れもついこの間まで知らなかったんだが、bit-field のメモリ上への割り当ては
非常に実装依存な領域で、上位から割り当てられるか下位から割り当てられるかも
決まっていないし、割り当て単位をまたいで確保されるかどうかも決まってない。
(14882:1998-9.6/1, 9899:1999-6.7.2.1/10)
実際、gcc には割り当てを Visual C++ 互換にするオプションがあるようだ(-mms-bitfields)。
ということで、メモリ上の割り当てを気にするならば >624, >620 後半のように自前で
処理する方がいいんじゃないかと思う。
0670デフォルトの名無しさん
NGNGhttp://www.arabtimes.com/mixed3/2.jpg
http://www.arabtimes.com/mixed3/1.jpg
http://www.arabtimes.com/mixed3/3.jpg
http://www.arabtimes.com/mixed3/4.jpg
http://www.arabtimes.com/mixed3/5.jpg
http://www.arabtimes.com/mixed3/6.jpg
http://www.arabtimes.com/mixed3/7.jpg
http://www.arabtimes.com/mixed3/8.jpg
http://www.arabtimes.com/mixed3/9.jpg
http://www.arabtimes.com/mixed3/10.jpg
0671デフォルトの名無しさん
NGNGグロ画像
>666
ハゲワラ
0672デフォルトの名無しさん
NGNG楽しそうだな。
0673デフォルトの名無しさん
NGNG思わず射精してしまった。
0674デフォルトの名無しさん
NGNGまぁここはC++のスレだからな。C++だと整数系の型だとOKのようだ。規格は見てない
けどVCのヘルプにはそー書いてあった。VCではMS独自仕様でLSBから詰めるそうだ。
0675デフォルトの名無しさん
NGNGあと、サイズ0(:0)だと次のアライメントまで飛ばすそうだ。#pragma packで指定された
やつな。
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGハマス指導者ヤシン師の痛い写真だな。
車内でRPGでもぶち込まれたか。
0678デフォルトの名無しさん
NGNGidはシャッフルのされ方の確認用に。
struct Card{
int val; int suit;
// int id;
} card[54];
でalgorithmのなかのramdom_shuffle()を使うと、
Card構造体のval suit idについてそれぞれごちゃ混ぜにされるようです。
本当は、val-suit-idをセットにして混ぜたいのですが、どうしたらいいですか?
0679デフォルトの名無しさん
NGNG書いたコード貼れ
0680676
NGNG0681デフォルトの名無しさん
NGNG書いたコードで ジョーカーの初期化を忘れていたことに加え、
random_shuffleの使い方を間違っていたようです。
random_shuffle( card , card+54);
みたいにしたら上手くいきました。
random_shuffle( &card[0].num , 略);
見たいなのがまぎれてました。
# かちゅ〜しゃ よりブラウザから書き込んだほうが
# 規制で書けない率が低い木がする
0682デフォルトの名無しさん
NGNG0683デフォルトの名無しさん
NGNGint hoge1[500];
int hoge2[500];
int hoge3[500];
random_shuffle( hoge1 , hoge3 );
ってしたらどうなるんだろう?hoge1の先頭からhoge3の先頭の位置まで
メモリ鍋状態ですか?
0684デフォルトの名無しさん
NGNG構造体ではなくローカル変数とかだと
hoge1とhoge2, hoge3のメモリ配置がどんな関係かはまったく予断してはいけないが。
構造体の中ならhoge1の先頭からhoge2の最後までが混ざるだろうな。
メモリ鍋って言葉は意味不明だが
0685デフォルトの名無しさん
NGNGみんないっちゃだめだよ〜wwww
http://www.geocities.jp/aransk88/contents4.html
0686デフォルトの名無しさん
NGNGいってほしくないならURL晒すんでねえ
0687デフォルトの名無しさん
NGNGそれなりにワラタ
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGない
0690デフォルトの名無しさん
NGNGどっかに落ちていない?ですか?
0691デフォルトの名無しさん
NGNG0692デフォルトの名無しさん
NGNG余程Cスレで相手にされなくなっていたのだろう。
このスレで言いたいだけ言って消えたな。
どこで覚えたのかネット上だけで通用する喧嘩論法で
人を追い込んだ気になって満を持して悦に入っていた。
リアルじゃ友達も彼女もそりゃいないだろうな。あれだけ
人に嫌われる内容の言葉を垂れ流しているんだもの。
0693デフォルトの名無しさん
NGNGどうしてもというなら、とりあえず
ttp://d.hatena.ne.jp/shinichiro_h/20040503#p6
あたりかな
0694デフォルトの名無しさん
NGNGさんざんやりこまれて、消えたころに悪態つくしか脳の無い間抜けかい?君
0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGキーボードのF1キーでも実行できるようにするのと
while文を実行中にF2キーで抜けたいけど
どうしたらいいですか?
調べてもわからないのでどなたか教えてくれませんか
0697デフォルトの名無しさん
NGNG/ |
/⌒ヽ / |
/ =゚ω゚)/. |
| つ'@ /⌒ヽ
〜_`)`). / =゚ω゚) ←694
 ̄ ̄ ̄しU | U /
| ( ヽノ
〜〜〜〜〜〜〜〜〜〜〜〜
0698デフォルトの名無しさん
NGNGまず質問するのに適切なスレを見つけることから。
0699デフォルトの名無しさん
NGNGさっきんとこでどなたか教えてくれてましたぜ。
0700デフォルトの名無しさん
NGNG精神科通いの前科歴のある人間は相手にしないように。
>>694
目障りだから他スレ行ってやってくれ。これ以上荒らすとアク禁要望出すよ。
0701デフォルトの名無しさん
NGNG> 脳の無い
0702デフォルトの名無しさん
NGNG>>694は知障かよ。さすがアニキ
0703デフォルトの名無しさん
NGNGそうですか...bcb対応スレ探してきます
>>699
教えてくれてありがとう
0704デフォルトの名無しさん
NGNGソースを変更されないようにするには(もしくは変更されたら動かなくするには)?
どのような方法があるでしょうか?
いまの管理はずさんでソースは誰でも改修できるように公開を求められます。
運用上問題があったら運用担当者が見ようみまねでソースを改修しコンパイルします。
手に負えない改修は開発者に依頼されます。(すでに弄くられているソース)
どの時点でも責任は開発者にあります。
CVSからエクスポートして公開しているソースに対して勝手に改修を掛けられます。
ルールもへったくれもありません。
0705俺用しおり
NGNGミ・・ ミ
( ° )〜 ここまで読んだ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0706デフォルトの名無しさん
NGNGbegin()をオーバーロードしているメンバ関数で
引数が同じvoidで、リターン値がconst_iteratorというのが別にありますけど
これって仕様的にマズくないですか?
パラメータの仕様が全く同じ関数はオーバーロードできないと思うんですが
0707デフォルトの名無しさん
NGNG同じじゃないじゃん
0709デフォルトの名無しさん
NGNGレスさんくす
今ぐぐって自己解決しました
暗黙的な第1引数thisポインタの型が違うわけか・・なるほど
0710デフォルトの名無しさん
NGNG板違い
0711初心者
NGNGプログラムを作成してますが、データの読み込みはできましたが
グラフの表示のしかたがわかりません。
0712デフォルトの名無しさん
NGNG君が無能だという事はよくわかった。
0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0715Windowsプログラム初心者
NGNG一時ファイルを環境変数TMPで指定されている場所に
作成したいのですが、環境変数の値をプログラム内で
使用する方法を教えてもらえないでしょうか?
あと、
アップロードボタンを押すたびに、<wininet.h>を
使用してFTPでファイルアップロードをする
プログラムを作っているのですが、
アップロードボタン3回までは正常に
動作するのですが、4回目から接続に
失敗してしまいます。
このような状況をご存知の方おられましたら、
解決法を教えてもらえないでしょうか?
0716デフォルトの名無しさん
NGNGスレ違い
VCスレかWinAPIスレに移動。場所は>>7
0717Windowsプログラム初心者
NGNG誘導thx
そちらで聞いてみます
0718デフォルトの名無しさん
NGNGとやってきて次何すれば良いか分からない・・
0719デフォルトの名無しさん
NGNGSTLはC++の一部でしかないのになぜ別項目
というかそもそも言語は道具であって
何かを作るためにあるわけだが
0720デフォルトの名無しさん
NGNGテンプレートでMLの処理系作成
0721デフォルトの名無しさん
NGNG0722デフォルトの名無しさん
NGNGGCCにもVSにもないしなぁ。
0723デフォルトの名無しさん
NGNGてか、DってC++'程度なんじゃねーの?
0724デフォルトの名無しさん
NGNG既にコンパイラができてること知らないのか?
仕様がきっちり決まった頃にはいろいろあらが見えてきて次の言語の模索が始まるのがこれまでの繰り返し。
0725デフォルトの名無しさん
NGNGもうすぐWin→Ronghornだろ
互換性あると思うけどなんとなく・・・な
GUIも買わないとダメだ、
それ以前に俺のOSだと.netインスコできないか(わらい
0726デフォルトの名無しさん
NGNGD -> C/C++と一見差が無い asmも埋め込める。ポインタもそのまま残ってる。
多重継承が消えてすっきり
Dはいいことずくめ。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNGそんなに大差なかろう。D言語が流行ってくるとすれば、
C→C++に進もうとして挫折した香具師用だな。
0729デフォルトの名無しさん
NGNG>C→C++に進もうとして挫折した香具師用だな。
自分のこと宣伝してうれしいか?
0730デフォルトの名無しさん
NGNGうれしいってもんじゃないねえ。D言語マンセー!!
0731デフォルトの名無しさん
NGNGD言語厨は自分のレスから外に出るな。C++スレを汚染しないでくれ。
この奇人変人が!!
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNGコンパイラみたいな奴だな。シンタックスエラーってか。
0734デフォルトの名無しさん
NGNGこれからって奴にはいいのかもしれんが
0735デフォルトの名無しさん
NGNGお前のおつむは鎖国状態か?スペクトルの範囲が極些な使えない奴だな。
爺はプログラミングなんかせずに養老院でもいって日がな一日刻数えてろ!
0736デフォルトの名無しさん
NGNGLongHornが出る頃には、.Net対応でないと少なくともWindowsでは
主導権が握れなくなっているだろうな。D言語とかD言語とかD言語とか。
C++か?C++は特別なんだよ。ネイティブでも可。
0737デフォルトの名無しさん
NGNGその割りにC++が主導権とってると思ってるお前はホント痛いな。
0738デフォルトの名無しさん
NGNGまだベータ版の域も脱し切れてないD厨よりは100倍増しさ。
0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNGmanaged c++いじってるだけならC#使うほうがよっぽど生産効率高いし、実行速度も差が無い。
少なくともWindowsのアプリ開発ではC++からC#にほぼ完全に移行した。C++の優位性を主張する上で
Windows開発持ち出しちゃ逆効果でしょ。
0741デフォルトの名無しさん
NGNGだな
0742デフォルトの名無しさん
NGNGこれって、敢えて使ってくれるなってことだよな。J#よりも使ってくれるなという意思表示。
0743デフォルトの名無しさん
NGNGそこで、C++/CLI ですよ。
http://std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1557.pdf
Sutter 先生乙
0744デフォルトの名無しさん
NGNG0745デフォルトの名無しさん
NGNGこれはいったいどこの話なんだろう・・
いくつか、すでにC#で開発してるという話を耳にしたことはあるが、
完全というには程遠い状況のようなんだが・・
まだ、(.NET)じゃないVBの方が需要ありそうだ。
0746デフォルトの名無しさん
NGNG6月30日に正式リリース。
0747デフォルトの名無しさん
NGNGそうだな。少なくともlonghornが出るまでは.Netの優位は感じられない。
標準で搭載されている訳じゃないし。
longhornになればGUI周りが一変されるから.Net移行してもいいとは思うが。
0748デフォルトの名無しさん
NGNGそれは君が現状知らないだけでしょ?学生さん?もちろんアプリの話であって、ハードウェアのドライバはC/C++だよ。
うーん。でも、ドライバはほぼCに限定してもいいかもね。
0749デフォルトの名無しさん
NGNG0750デフォルトの名無しさん
NGNGそれ以外のソフトウェア・・・C/C++
この言語3つで将来食っていけますか?
0751デフォルトの名無しさん
NGNG言語: C/C++/C#(.NET)
マトモにできているなら重宝するよ
0752デフォルトの名無しさん
NGNGそうすりゃCでもC++でも見違えるぐらい効率的なコードが書けるようになる。
0753デフォルトの名無しさん
NGNG業務で使うリッチクライアントやサーバー関係など多種多様にある。
それを一つの言語だけということはあり得ない。
>>750
言語がどうこうよりもプログラマーとしてのレベルが大事。
仕事の場合、どんな言語、環境が使われるかわからない。
C/C++でも環境依存なと事かあるし
APIなんてAPIプログラムというのが必要になって来るし。
変に固執するよりもしっかりと地力をつけるのが大事。
0754デフォルトの名無しさん
NGNG今の時代は効率よりも保守性。
それぐらいは常識ですが?
まあ、高速性などが必要な場合は除く。
0755デフォルトの名無しさん
NGNG8086マシン勉強して
アセンブリは一応読めるレベルだけど
書く気は起きないっすよ・・・
0756デフォルトの名無しさん
NGNG一行プログラムでもっと重宝できるのがawkあとperl。アプリ書くわけじゃないけど
C系だと面倒なファイルの読み書きや正規表現を手っ取り早くこなして
Post Programming作業が楽になる。
0757デフォルトの名無しさん
NGNGじゃ!君にはC#がぴったりだな。このスレから出て行ってくれ。
0758デフォルトの名無しさん
NGNG>>754
じゃ!君にはC#がぴったりだな。このスレから出て行ってくれ。
0759デフォルトの名無しさん
NGNGその地力とは何かを聞いてるんだよッ。
0760デフォルトの名無しさん
NGNG様々な言語が生まれ消えていくから。
そしてそれを採用する企業がいる限り・・・
まあ、個人が趣味でやる分には何をやろうとかまわないけど。
Delphiも.netに移行しちゃったし。
速度を必要としなければVB,C#でもかまわない。
俺はGUI部をdelphiでつくって基幹部をC++でDLLとして作ってる。
0761デフォルトの名無しさん
NGNG学生の俺がレスしてやろう
多分、逆汗してネイティブコードを見ることだろう
0762デフォルトの名無しさん
NGNGプログラムに対する考え方とかそういうの。
結局プログラムはロジックの固まりだから論理思考とかね。
ようするに言語に依存しなく、かつ言語の基礎になるもの。
いろんな言語にふれるのもいい。
あとはどれかをとことんやり込む。
0763デフォルトの名無しさん
NGNGじゃ詰め将棋でもいいっすか?
それか、徹底的に論理思考を鍛えてる
数学者は最高のプログラマということなんだな?
0764デフォルトの名無しさん
NGNGそれは相当アセンブラで書き込んでないと難しいぞ。
どんな言語でも人のコード読んで理解するには相当書き込んでないとだめ。
特にアセンブラはコードのつながりとか構造が理解しづらいよ。
0765デフォルトの名無しさん
NGNG> 数学者は最高のプログラマということなんだな?
別に論理思考だけじゃないから。
他にもいろんなものが必要になってくる。
それぐらいもわからないお前は
最低のプログラマーであることは間違いないがな。
CPUは計算機ですよ?
0766デフォルトの名無しさん
NGNGから。
くる。
がな。
ですよ?
0767デフォルトの名無しさん
NGNGわからなから聞いてるんだよッ。
>最低のプログラマーであることは間違いないがな。
おちょくってたら思惑通り切れてやがんの。ギャハハハ。ばーか
>CPUは計算機ですよ?
それがどないした?
0768766
NGNG0769デフォルトの名無しさん
NGNG昔はCとかだったのが今はゆとり教育でJAVAとC#とか。
ここで名言。
「楽をするのはかまわない。ただ、なぜ楽ができるかを知っていなければならない」
0770デフォルトの名無しさん
NGNG0771デフォルトの名無しさん
NGNG自分のせりフを名言とかいうな。恥ずかしい。普通一句とかいいたいが句になってないしな。
0772デフォルトの名無しさん
NGNG0773769
NGNG0774デフォルトの名無しさん
NGNG> >それぐらいもわからないお前は
> わからなから聞いてるんだよッ。
わからないから考えるんだよ。
考えることをやめたら人間終わり。
まあ、お前はすでに終わってるから関係ないか。
> >最低のプログラマーであることは間違いないがな。
> おちょくってたら思惑通り切れてやがんの。ギャハハハ。ばーか
普通の成り行きだろ。お前が「最高」といったから「最低」で返した。
思惑通りの反応でやんの。ギャハハハ。ばーか
> >CPUは計算機ですよ?
> それがどないした?
ない頭をふりしぼって意味考えろ。
って考える力がないんだったね、ごめん。
0775デフォルトの名無しさん
NGNGまた例のC厨か?
さっさとCスレに帰れ。
0776デフォルトの名無しさん
NGNGいや、誰が言ったか忘れたが引用。
個人的に衝撃受けたもので。
0777デフォルトの名無しさん
NGNG0778デフォルトの名無しさん
NGNG事実上、ゆとり教育は現場で通用しないというか、現場の入り口にさえ入れないという現実がある
0779デフォルトの名無しさん
NGNG今の教育もそうだよな。小学校でなにをやろうと大学が変わってないから
結局苦労する・・・
0780デフォルトの名無しさん
NGNG0781デフォルトの名無しさん
NGNGsystem("PAUSE");
これでも使え
0782デフォルトの名無しさん
NGNGだからC厨は(ry
0783デフォルトの名無しさん
NGNGウイスルかDOSプログラム。
DOSプログラムならDOSかあ起動すればいいし、ウイルスならなもうだめだな。
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNG茶化されてることに気づかず。まじめーにレス返してて、気づいた時点での激高振り。
まさに、厨中の厨。先のC厨はまじめなレスなんかはじめから返してなかったんじゃねぇの?
0786774
NGNG反論に反論で返したかったのよ。
ちなみに他にもいろいろ書いてるよ。
ID制じゃないからわからないだろうけど。
0787C厨晒しage!
NGNG0788デフォルトの名無しさん
NGNG食生活のせいかなぁ・・・。
0790デフォルトの名無しさん
NGNGなんでも親のせい、大人のせい、教育のせい、社会のせいに
してはいけない
0791デフォルトの名無しさん
NGNGその自己は誰が育てると思う?
0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNG自然淘汰圧と個体の環境適応戦略と順応能力
0794デフォルトの名無しさん
NGNGそれともGW終わって嫌々仕事してるPGの悲鳴?
0795デフォルトの名無しさん
NGNGじゃんけんのフローチャートってどうなりますか?
0796デフォルトの名無しさん
NGNGC#やJava厨ならともかく
C++厨がD言語嫌う理由は何だ?
0797デフォルトの名無しさん
NGNG> C++厨がD言語嫌う理由は何だ?
1. ここが C++ 相談室スレだから。
2. さすがに、まだ仕事には使えない状況なのだけど、その現状を無視して D, D やかましい
輩が数人いるから。
0798デフォルトの名無しさん
NGNGそりゃまぁ、メーカーがね(ry
0799デフォルトの名無しさん
NGNG[かけ声にあわせて、グー、チョキ、パーのいずれかを出す]
↓ ↑
<判定をする>→あいこなら↑
どちらかが勝てば
↓
(終了)
0800デフォルトの名無しさん
NGNGC++でできることはすべてできてしかも生産性が高そうなことに嫉妬して。
ま、C厨と同じく向上心のかけらも無い奴は死になさいって琴田
0801デフォルトの名無しさん
NGNGD厨は氏ね。
0802デフォルトの名無しさん
NGNG二人ならね。
3人以上の場合はまずあいこか調べそのあと
架空の相手(誰も出していない手)と対戦させ
そいつに負ければ勝ち、勝てば負けとなる。
0803デフォルトの名無しさん
NGNGDが嫌われてるというより、D厨がC++スレ荒らしにきてるだけだろ
0804デフォルトの名無しさん
NGNGあのさあ、D覚える方が、C++覚えるよりずっと簡単なんだけど。
嫉妬なんかしてないんだけど(仕事でC#使ってる)。
向上心というより、どう考えても幼稚化なんだよなあ、Dは。
未来のない会社の株は誰も買わないでしょ。それと同じなんだよ。
0805デフォルトの名無しさん
NGNG触ってる奴らでまともにC++の代替って考えてる奴なんかいるか?
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG俺も全く同感なんだが、どうもD厨の中には甚だしく勘違いをして
いる香具師がいるらしく、「新しい物ほど偉い」と思っているらしい。
俺はそういう香具師に「C++に挫折したC厨が次に飛びつくのはDだ」
と揶揄したつもりだったんだが。ほとんどの人はDを遊び道具としか
考えてないはずなのに、>>800みたいなD狂信者がいて、しかもC++
スレを荒らしに来るので困っているのだ。
0808デフォルトの名無しさん
NGNG0809デフォルトの名無しさん
NGNG本当に「いいとこ取り」なら互換性を捨てたりしないだろう。Dは一番
美味しい所を捨てているように思えるが。
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNGあのさあ、ずっと簡単だからいいんだよ。
C#使っててなんでそれ使ってるかわかってないのか?
しかも、幼稚とは思わず使わされて日銭稼いでいる下働きプログラマなんだろが?
>未来のない会社の株は誰も買わないでしょ。それと同じなんだよ。
C++に未来があると思ってる時点でおめでたいことこの上ないな。
Windows以外では別に終わるわけじゃないが、汚前が日々糞coderやってる
WinではC++は終わりなんだよ。
0813デフォルトの名無しさん
NGNG完璧な言語なんてない。
0814デフォルトの名無しさん
NGNG激しく同意。所詮ハードウェアの手順なんだからな。
0815デフォルトの名無しさん
NGNG0816デフォルトの名無しさん
NGNG一番おいしい部分のどこを捨ててしまったのか教えてください。
0817デフォルトの名無しさん
NGNGまあまあ。
味覚なんて人それぞれ違うんだから。
0818デフォルトの名無しさん
NGNG0819デフォルトの名無しさん
NGNG俺も思った。>>811の比較見る限り。
0820デフォルトの名無しさん
NGNG>>809 は多重継承が何がなんでも必要なんだよ。
言語仕様知らずにこっぱずかしコメント書き込んでるわけじゃないだろうし。
0821809
NGNGよーし。ガベコレけなしたろー。
0822デフォルトの名無しさん
NGNG0823809
NGNG0824デフォルトの名無しさん
NGNG腐るほど読んだよそのページは。
>>812
でもD言語も始まるわけじゃないね。
>>813
まあそうだな。
0825デフォルトの名無しさん
NGNGそこにしがみついてる奴の擁護も当然メチャクチャになる。
0826デフォルトの名無しさん
NGNGC++の最大の失敗はCを引き継いだところ。いいところ悪いところ両方。
0827デフォルトの名無しさん
NGNG0828デフォルトの名無しさん
NGNGD言語だって良いとこどりのつもりでごちゃごちゃいろんな機能を
取り入れようとしてつぎはぎだらけになってるけどな。w
0829デフォルトの名無しさん
NGNGここで下らん叩き合いをするな
0830デフォルトの名無しさん
NGNG言語として失敗だろうがなんだろうが、これだけたくさん使われている以上、
まだC++の時代は終わらん。
俺はVC++よりマトモなコンパイラが出てこない限り、C++をやめる気はない。
0831デフォルトの名無しさん
NGNGスマートさがない。
どれも50歩百歩。
それに、実用性は言語の良し悪しじゃ決まらん。
どれだけCに似てるかと、開発環境の性能で実用性が決まる。
よってC++かC#が一番実用的だ。w
0832デフォルトの名無しさん
NGNG0833デフォルトの名無しさん
NGNG0834デフォルトの名無しさん
NGNGデファクト開発言語の割りには、有名なあのフリーソフトも
あのシェアウェアも全部C#じゃないね。w
0835デフォルトの名無しさん
NGNG0836デフォルトの名無しさん
NGNG0837デフォルトの名無しさん
NGNG学生ちゃん。
0838デフォルトの名無しさん
NGNGC++しか選択肢が無いしな
Win以外の分野ではC#なぞかけらも見ない
0839デフォルトの名無しさん
NGNGあれだけ環境依存だと
言語仕様そのものに大幅な修正が要るな
今時そんな薄氷のような言語イラネ
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG>C++しか選択肢が無いし。
さらしあげ。首つって市ね。あほ!
0842デフォルトの名無しさん
NGNG0843デフォルトの名無しさん
NGNGC++厨はなんでこんなに他をけなしてしがみついてるの?C厨以下だな。
0844デフォルトの名無しさん
NGNG0845デフォルトの名無しさん
NGNGXBoxとDirectXはC#だよ
PSはアセンブラ
0846デフォルトの名無しさん
NGNG> 新しく普及しそうな言語がでたらそれをえるように対応するだけなのに
いや、大半の人間は「普及したら」で間に合う。とりあえず Visual D 出るまで
待ちでしょ。
0847デフォルトの名無しさん
NGNGPSはアセも使うがC/C++も使えるぞ。
コードウォーリアーとかあるし。
ミドルウェアも多いし。
0848デフォルトの名無しさん
NGNG俺もそう思う。VDとか出たら考える。
JAVAだって結局Serverサイドかゲームぐらいしか使われなくなってるし。
0849デフォルトの名無しさん
NGNGよそのスレで他の言語叩いてるC++信者に言ってくれ・・・
ここはC++のスレだからさ・・・
0850デフォルトの名無しさん
NGNGPS2のエンジン(ライブラリ)はC++で書いて、微調整でアセンブリだろ
0851デフォルトの名無しさん
NGNG反吐が出るね。M$プログラマのレベルなんてこんなもん。お前はM$の下請けか?
0852デフォルトの名無しさん
NGNG> PS2のエンジン(ライブラリ)はC++で書いて、微調整でアセンブリだろ
VU1 で走らせるマイクロコード (シェーダー) は、専用のアセンブラ言語。
メイン CPU 側で走るコードは大半が C++, コンパイラがサポートしていない
SIMD 命令 (R5900 マルチメディア命令と VU0 マクロモード)、あとは同期
処理などで使うハードに極めて近い命令だけインラインアセンブラで書く、
っつー感じ。
いずれにせよアセンブラは数学関数や描画系などの中で使うのがメインで、
ゲームっぽいコードのほうにはめったに顔を出さない。
0853デフォルトの名無しさん
NGNG勝手に反吐だしてれば?糞が。
M$は嫌いだが、コンパイラとマウスは出来がいい。
0854デフォルトの名無しさん
NGNGコンパイラはIntel、GCC、VC、Borlandぐらいか?
0855デフォルトの名無しさん
NGNGほかにも CodeWarrior とか。
組み込み用途だと CPU ベンダ純正のコンパイラとか、リアルタイム OS 屋
が出してるコンパイラ (Wind River Diab C/C++) とか色々あるよん。
0856デフォルトの名無しさん
NGNGソフトウェア開発で職業プログラマが同じ処理を書くとき
少なくともC++より高水準なC#を使う場面なんてあるか?
ゲームプログラムだって
より低水準な言語でローレベルな調整したいのが人情
少なくともゲームプログラムではC・C++をメインに
専用アセンブリで痒いところを微調整というのが通常
0857デフォルトの名無しさん
NGNGC++みたいにコンパイル結果が見通しにくい言語使っちゃ、人間が介入するの大変だろうが。
0858デフォルトの名無しさん
NGNG違う。メジャーどころって意味で。
マイナー含めたらそれこそ山のようにある。
0859デフォルトの名無しさん
NGNG業務ってもパッケージソフトウェアとシステム開発で全く違うだろ、
ってかC#が台頭してるのはVB使ってたような場所。
0860デフォルトの名無しさん
NGNG> 違う。メジャーどころって意味で。
組み込み用途は、むしろメジャーだと思うぞ。開発人口も少なくないし。
0861デフォルトの名無しさん
NGNGC から C++ になって見通しが悪くなったのは、コードの配置ぐらいだと思うが。
あれは inline やら template やらあるから C と違って調整が難しい (命令
キャッシュのヒット率を上げるのが難しい) けど、他はそれほど。
最適化をかけると元のコードとかけ離れたコードをはくのは C も C++ も
大差ないよ。レジスタリネーミングを使うと、かなり追えん。
0862デフォルトの名無しさん
NGNGとても信じ難いんだけど。
どういう世界でデファクトなの?
0863デフォルトの名無しさん
NGNGデファクトは「事実上の」って意味だけだ。
0864デフォルトの名無しさん
NGNGWeb がらみの三階層アプリケーションだと、わりと流行ってる感じ。
これまで VBScript, JScript 使って ASP 書いてたところが、C#.net に
乗り換えてる。
でも、そっちも JSP とか ColdFusion なんかもあるし、まだデファクト
スタンダードっつ〜ほどじゃないと思うが。
0865デフォルトの名無しさん
NGNGC#はJSP,ASPに置き換わるものとして作られたんだろ。
クライアント用にはVBがあるわけだし。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGどもりで困ってるのか?
0868デフォルトの名無しさん
NGNGM$がらみはデファクトスタンダードはない。
M$がスタンダードを決めてお前らが従うだけ。嫌なら書かなくていーよ。
アプリ書きたい奴はいっぱいいるから。
言語どころか開発環境さえ選択の自由なんかあるかよ。
0869デフォルトの名無しさん
NGNGそれはVBScriptが取って代わってるだけでC++と
取って代わってるわけじゃないだろ。
0870デフォルトの名無しさん
NGNG> M$がらみはデファクトスタンダードはない。
三階層アプリだと Oracle + JSP や SQL Server + ASP (C#.net) など、
選択肢はいくつかあるよ。クライアントサイドだと Win32 でほぼ決まり
だから、選択の余地は狭いが。
0871864
NGNGその通り。
っつか、俺は C++ と C# は有効に活用できる対象が明確に違うと思ってる。
ただ今後は Win32 クライアントも C# で書く機会が増えそうだし、これまで
C++ が受け持っていた領域にも少し C# が食い込んでくるかなぁ、とは
考えてるけど。
0872デフォルトの名無しさん
NGNGC++は従来Cでやってたことを、一歩進めるのに使う。
0873デフォルトの名無しさん
NGNGクラステンプレートにて例えば
template<typename mytype> class test{
test(const mytype &); //コンストラクタ
…
};
としたとして、コンストラクタなんですが、上記とちょっと変えて
test<mytype>(const mytype &);
とするやり方があると本で読んだのですが、いまいちどう違うのか
わかりません。何でもmytypeにそれぞれ固有のコンストラクタが
コンパイラによって生成されるとかなんだそうですが、最初のやり方
でもそんな感じがします。
どう違うのでしょうか?
0874デフォルトの名無しさん
NGNG違いなんてありません。
0875デフォルトの名無しさん
NGNGということは
test<mytype>というコンストラクタの書き方は意味をなさないと?
0876デフォルトの名無しさん
NGNGこりゃもう乗り換えるしかないだろ。
0877デフォルトの名無しさん
NGNGまだ言ってるのか・・・。言語論に速度はほとんど関係ないよ。
0878デフォルトの名無しさん
NGNG技術ばかりに目が行ってると、その辺が理解できなくなる。視野の狭い人間に
何言っても無駄だから、放置しとけ。
俺は Visual D はともかく、プログラミング言語 D と Effective D が出たら
考えるよ。
0879877
NGNG0880デフォルトの名無しさん
NGNG0881デフォルトの名無しさん
NGNGここによると、
ttp://www.gamedev.net/community/forums/topic.asp?topic_id=121193
std::iftream ifs( "filename" );
ifs.rdbuf()->sgetn( (char*)data, size ); // low-level
とするのがいいといってるんですが、
50MBほどのファイル読み込みをCと比較すると3倍ほど遅いです。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNG比較用のソース晒せ。
0884デフォルトの名無しさん
NGNG0885デフォルトの名無しさん
NGNGその後のデータの使い方による。stream の機能をフルに使いたいなら
そこで示された方法を使うことになるし、単にメモリ上にマップすれば良い
のなら mmap() とか MemoryMappedFile() といった OS の仮想記憶
システムに近い低レベル API を使うことになる。
0886デフォルトの名無しさん
NGNG>> 883
だいたいこんな感じです。
const int BUFSIZE = 4096;
// C 用
setvbuf(fp, NULL, _IOFBF, BUFSIZE);
clock_t start = clock();
while (fread(buf, 1, BUFSIZE, fp)) ;
clock_t end = clock
---
// C++ 用
ifs.rdbuf()->pubsetbuf(buf, BUFSIZE);
clock_t start = clock();
while (ifs.read(buf, BUFSIZE)) ;
clock_t end = clock、
>>885
Cのfopenとfgesで十分な使い方です。
ただなんでこんなに速度差があるのか疑問だったので。
0887デフォルトの名無しさん
NGNGまちがえました。
ifs.read(buf, BUFSIZE));
↓
ifs.rdbuf()->sgetn(buf, BUFSIZE);
0888デフォルトの名無しさん
NGNGなんで部分的に貼るんだよ。テストしにくいだろ。
0889デフォルトの名無しさん
NGNGデバッグビルドしてませんか。
0890デフォルトの名無しさん
NGNGaがtrueの時はfalseに、falseの時はtrueにするような(反転するような)
代入をしたいのですが、
a=~a;
だと、コンパイラが受け付けてくれません。
どうやったらいいでしょうか。
0891デフォルトの名無しさん
NGNGa = !a;
0892デフォルトの名無しさん
NGNG配列も普通にdeleteだけで開放できても問題ないような。
[]を付け忘れて間違えるデメリットはあっても、付ける事によるメリットって
なんかある?
0893デフォルトの名無しさん
NGNGある。
配列を開放する場合、デストラクタを呼び出すために、その配列に格納
されている要素数をどこかに記録しておく必要がある。delete, delete[] を
共通にしてしまうと、常にこの要素数を記録せにゃならんので、その分だけ
メモリが無駄になる。
0894デフォルトの名無しさん
NGNGでも正直、貧乏臭いよね。
0895デフォルトの名無しさん
NGNG下手すると豪快にリークしてくれるて本末転倒
0896デフォルトの名無しさん
NGNGそれ本当?
もともとメモリ開放するためには、newで確保したメモリサイズが
なにかしらの管理領域に保持されているはずだよね。
そしたら要素数なんて別に持たなくても、要素数は算出できるはずじゃね?
0897デフォルトの名無しさん
NGNG0898デフォルトの名無しさん
NGNGWindowsなどのPC環境でしか開発をしたことがないと
そういう言葉が出てくる
0899デフォルトの名無しさん
NGNG[ ]あってもなくてもデストラクタは呼ばれる。
0900デフォルトの名無しさん
NGNG確かにメモリがシビアな状態ではね。
でも、newした時点ですでに保持されてるんじゃないの?
0901デフォルトの名無しさん
NGNGそのオブジェクトのサイズはね。
だけどポインタが指してる先が一個のオブジェクトか、配列の先頭かは
プログラマにしか分からんよ。
0902デフォルトの名無しさん
NGNGOSも知ってる。もちろんOSにも寄るけど。
0903デフォルトの名無しさん
NGNGttp://www.tietew.jp/cppll/archive/10666
ここを読みんしゃい。
あと、>>896 が言うように計算可能であるかもしれないけど
コストがかかる処理になるかもしれないし
メモリアロケータを設計する上での足枷となりうる。
0904デフォルトの名無しさん
NGNGメモリアロケータはユーザが override 可能だから、それを仮定することはできない。
0905デフォルトの名無しさん
NGNG>>899
え?
0906デフォルトの名無しさん
NGNGうーん、そんなにコストかかるか?
newで確保したメモリ内に管理用領域が付随していて、
それが激しくサイズ不定でとかならわかるが、
普通は引き算がせいぜい数回と、割り算1回発で済むんじゃないの?
>メモリアロケータを設計する上での足枷となりうる。
というのも足かせが思いつかん。
0907デフォルトの名無しさん
NGNGメモリアロケータは要求されたメモリサイズをそのまま確保するのではなく、
8, 16 バイト単位に切り上げた上でメモリを確保・呼び出し側に渡したり、
一定サイズまではライブラリ内部でプールしておいて、閾値を越えたら OS
のアロケータに丸投げしたりといった細かい工夫が施されてたりする。
確保したメモリサイズ・要素数を生のまま埋め込むことを前提とすると既存の
メモリアロケータを全部捨てて書き直す必要がるし、かといってアロケータが
まったく別の領域で「メモリアドレス先頭」と「要素数」の対応表を管理すること
にすると、そっちのメンテナンス・検索コストが結構かかる。
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNG何と比較して?
0910デフォルトの名無しさん
NGNG[]なしだと呼ばれるのは先頭要素だけだよな
0912デフォルトの名無しさん
NGNG0913908
NGNG即レスありがとうございます。
今のところコールバック関数をメンバにしたいときにしかつかったことないんでどういうときに使うといいのか〜ってのがいまいちわかってないみたいです。
もっと勉強したほうがいいですね。
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNGクラスのオブジェクト生成のカウンタとか、共通で扱うデータなどは静的メンバ変数にする。
0916908
NGNG0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG>というのも足かせが思いつかん。
古臭い仕様上の制約というやつだ。合理性を求めても仕方が無い。
0919デフォルトの名無しさん
NGNGC++の言語仕様に
関数名に付加する修飾子みたいなのってありますか?
0920デフォルトの名無しさん
NGNGWINAPIが何で定義されてるかお前は知っているのか?
0921デフォルトの名無しさん
NGNGヲーヲー!もっともクロック数が必要な命令じゃないか。
0922デフォルトの名無しさん
NGNG__stdなんたらとかいう記号定数だろ
windows.hで定義されてるやつ
仮にC++のソースに関数名と型の間にひとつトークンを置いたとき
こういうのを関数名を修飾するトークンというふうに
認識してくれるのかなとか、なんとなく思ったので質問した
0923デフォルトの名無しさん
NGNG> __stdなんたらとかいう記号定数だろ
「記号定数」ってなんだ?
C++の文法と、使っているコンパイラのマニュアルを確認しる。
0924デフォルトの名無しさん
NGNGお前がそのWINAPIを使うときに使ってる言語は何だと思う?
その言語は「修飾するトークンというふうに認識」してるらしいが、
その言語はなんだと思う?w
0925デフォルトの名無しさん
NGNG0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG>>919
関数名に付加する修飾子は在るが、呼び出し規約を指定するものはない。
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG0930デフォルトの名無しさん
NGNG土曜日ですよ。
0931デフォルトの名無しさん
NGNGinline, virtual, explicit, staticなんだが、これを呼び出し規約と言うのか?
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNGそうだったか…
0934デフォルトの名無しさん
NGNGちなみに先頭にアンダーバーがついてるので処理系依存だな。
0935デフォルトの名無しさん
NGNG他になんか必要な場合ある?
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNG__thiscallと書きたい気分はわからんでもないが、とりあえず手元のVC7にそんなキーワードはなさげだったぞ。
あとアンダーバー二つはM$拡張みたいだが、詳しいことは漏れもよくわからん。
0938デフォルトの名無しさん
NGNGD言語
0939デフォルトの名無しさん
NGNGC++メンバ関数用
基本的には__cdeclと同じだが、最後にthisをpushする。
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG0942デフォルトの名無しさん
NGNGAPIのコールバック関数。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNGはぁ?
ttp://www.microsoft.com/japan/developer/library/vccore/_core_thiscall.htm
でも見てろ。
0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGじゃあ分かり難い誤訳でもご覧になって落ち着いてください。
http://support.microsoft.com/default.aspx?scid=kb;JA;74586
0947デフォルトの名無しさん
NGNGttp://www.microsoft.com/italy/survey/surveycom_jp.aspx
0948943
NGNGそれ以外の場合はecxレジスタで渡す。
↓原文。この時点でたしかに誤解を招きやすい。
http://msdn.microsoft.com/library/en-us/vccore98/html/_core_thiscall.asp
↓新しく書き直されたのがこっち。だいぶ読みやすくなってる。
http://msdn.microsoft.com/library/en-us/vclang/html/_core_thiscall.asp
0949デフォルトの名無しさん
NGNG0950919
NGNG関数の呼び出し規約の修飾子は。
つまり、WINAPI向けにコンパイラの機能を拡張しただけだと
0951デフォルトの名無しさん
NGNGx86に呼び出し規約がたくさんあるのも、WINAPI向けってわけじゃぁない。
↓ここの"The history of calling conventions"シリーズがかなり詳しい(まだ全部読めてないけど)。
http://weblogs.asp.net/oldnewthing/archive/2004/01.aspx
0952デフォルトの名無しさん
NGNG扱いたいんだけど、どうやって代入すればいいですか?
string s = "aaa\0bbb\0ccc\0\0";
だと、"aaa" までしか代入できません。
0953デフォルトの名無しさん
NGNGbasic_string(const_iterator first, const_iterator last, const A& al = A());
0954デフォルトの名無しさん
NGNG0955デフォルトの名無しさん
NGNG> string s = "aaa\0bbb\0ccc\0\0";
そりゃ初期化だ。初期化なら >>953 の挙げてるコンストラクタ使え。
代入なら同じ引数のassign使え。
リテラルのサイズを取得するのに、templateを使うと幸せになれるかもしれない。
template< std::size_t N > inline std::string& assign_literal( std::string& target , char const ( &literal )[ N ] ){ return target.assign( literal , N - 1 ); }
0956デフォルトの名無しさん
NGNGうわっ、レス早っ!
こんな感じでいいのかな?
char *p = "aaa\0bbb\0ccc\0\0";
string s(p, 13);
string t;
cout << s << endl;
cout << s.size() << endl;
t.assign(p, 13);
cout << t << endl;
cout << t.size() << endl;
どうもでした。
0957デフォルトの名無しさん
NGNG× char *p = "aaa\0bbb\0ccc\0\0";
○ char const *p = "aaa\0bbb\0ccc\0\0";
0958デフォルトの名無しさん
NGNG>>955の書いたテンプレート関数なら
std::string s;
assign_literal(s, "aaa\0bbb\0ccc\0\0");
で済みますな。長さを別途与えなくてもいい
0959デフォルトの名無しさん
NGNGほんと糞下らんこと言う奴いるな。
いったん初期化したあとで別のアドレス指すのかもしれんだろうが。
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNGお前の意図したコードは↓じゃないか?
char const * const p = "aaa\0bbb\0ccc\0\0";
0963デフォルトの名無しさん
NGNGconst char *const p = ...
ならあると思うが
0964デフォルトの名無しさん
NGNGというより const が直後を修飾すると考えると
char const の方がbetter だと思う。特にpointerのアドレスか内容かをconst指定する際
char const *p;
はわかりやすいと思う
0965デフォルトの名無しさん
NGNG> char const の方がbetter だと思う。
そうか、読みにくいから俺はいつも const char だ。
0966デフォルトの名無しさん
NGNG> const が直後を修飾すると考えると
漏れの場合その道理でいくとconstが*にかかって
ポインタを移動できなくなるんじゃないかと誤解するなぁ。
0968デフォルトの名無しさん
NGNGchar *p;
で*pをポインタと考えてるからだろうが!違うぞ pがポインタで*pはその内容を意味する。
だから
char const *p
は p の指す内容を不変とすること。
char * const p;
は p の指すアドレスそのものを不変とすること。
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNGconstが直後を修飾するという考えなら
const charでいいだろ。あくまでchar型のインスタンすを定数と
考えるんだからな。
long だってlong int ってするようにな。
0971966
NGNG> で*pをポインタと考えてるからだろうが!
いや、宣言時には*がポインタを表す装飾だと思って(思い込んで)いるから。
漏れの場合*とpは離して書いてるが、それも宣言専用の装飾だと思っているから。
ちょっと無理のある表現だが
const char pointer p;
みたいな感じかな。
> pがポインタで*pはその内容を意味する。
だとすると、
char *p="null po";
はおかしな表現に思えてしまう。
あくまで宣言のみの表現で*pが内容を意味しないと解釈すると
上のようにpointerに置き換えられるので納得しやすい。
あとは定数の表現をchar constではなくconst charと覚えているから
const charのポインタということでconst char *にしているというのもある。
0972デフォルトの名無しさん
NGNGそういう表現を積極的に採用してる書籍ってあるのか?
ストラウストラップだってconst charだろ?
char型の・・・ただのchar型でなくて、定数のchar型・・・
というような順の修飾と考えたほうが自然だと思うけどなぁ。
char constという表現を知らんやつがいても仕方ないぐらい、
特殊な書き方だと思うよ。
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNG>はおかしな表現に思えてしまう。
これは、本来は文法的にはあまりよろしくない書き方だ。
初期化が面倒だから、K&Rにもこういう書式を許しているし、コンパイラもOKだが
本来は
char *p;
p="おまえはバカ";
であるからな。厳密に考えるとCにはおかしな書式がいくつかある。
0975デフォルトの名無しさん
NGNG( ゚д゚)ポカーン
0976デフォルトの名無しさん
NGNGそれはお前がバカだから、
Effective C++
読んでから言え。もっとも積極的に勧めてるわけじゃなく、
両方読める必要があると言っている。
お前はそれを知らなかったんだから、知る必要があったわけだ。
無知をひけらかして恥さらすな。
0977デフォルトの名無しさん
NGNG思わんよ。
どんな修飾がついてたって、インスタンスはpであってその内容を代入してる
わけだから。修飾子とインスタンスを切り離して考えれば自然ではある。
char *p = "おまえがバカ";
でいいと思う。
0978966
NGNGconst char *で宣言してもコンパイラのエラー出力ではchar const *になってたりするけどな。
話はちょっと反れて関数のポインタが&をつけなくても
取得できるのがおかしいというのをたまに聞くが、
あれも関数名はポインタそのもので()がポインタを解決する(実際には実行するんだが)為の
operatorと考えていて何も疑問を感じていない。
むしろ関数名に&を付けて関数のポインタを得られることが不思議だったりする。
メンバ関数に対するconstでもないしそろそろCスレ行きか。
0979デフォルトの名無しさん
NGNG他所から拾ってきたソースや過去の自分のソースで const char とか書いてあるのを見たときに少し考えてしまう。
> そういう表現を積極的に採用してる書籍ってあるのか?
David Abrahamsによるboostのソースはそうなっている。
上記のルールの一本化も彼のコーディングガイドラインによるもの。
少し前のgccの出力がそうなっていたが、最近はconstが右につくようになった。
0980デフォルトの名無しさん
NGNG話にならんな。
この場合 long は int を修飾するだけ
int long x;
とやって long が xを修飾する必要がどこにあるんだ。
char const *p;
の const がポインタ内容を修飾する必要のある場合とは全く意味が違う。
例を持ち出すならもっと的確な事例を挙げてろ
0981デフォルトの名無しさん
NGNG関数名は関数型を持ち、関数型は関数へのポインタへ暗黙の変換が効く。
関数への参照という型も存在する。
この認識がないと、templateで関数型を扱うものが理解できない。
0982デフォルトの名無しさん
NGNG> 本来は
> char *p;
> p="おまえはバカ";
と言われても、
char const * const p;
p = "NULLPO";
と書くと警告でちゃうぞ。
>>976
何熱くなってんだ ?
誰も const char と char const のどちらかしか読めないなんて書いてないぞ。
0983デフォルトの名無しさん
NGNGバカはおまえだ。俺は両方の表現知ってたし、あくまで
const char より char const の方を押してる書籍の話を
言ってんだ。それが積極的ってことだろ。Effe C++だって
char constを押してるわけじゃない。知る必要とかじゃなくて
どっちが一般的かって話してんだよ。それからお前はEffe C++
がすべてか。バ・カ・タ・レ。
0984デフォルトの名無しさん
NGNG関数のポインタってなんだ?関数へのポインタのことか?
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGclass Class { ... } typedef C;
0987デフォルトの名無しさん
NGNGお前のことだ(w
0988デフォルトの名無しさん
NGNGお前が何にも知らんことは文面から用意に察することができたのでバカでも知ってる教科書名を挙げてやったのよ。
一通りよんでりゃ、const の前置、後置ぐらいでスレ汚すバカは居ないだろうからな。勉強になったことを感謝しろ。
日 本 海 溝 よ り 教 育 レ ベ ル の 低 い 糞 ガ キ よ 。
0989デフォルトの名無しさん
NGNGそれぐらい理解しろよ。
人と話したことないのか ?
0990966
NGNG>>971と同じ意見だよな。ありがとう。
が、あくまでソースから受ける印象の話であって何が正しいという話はしていないことに注意。
>>984
すまん。関数へのポインタ。
>>981
恥ずかしながら関数型という言葉を知らないんだが具体例をきぼん。
ということでC++の話題へ。
0991デフォルトの名無しさん
NGNG>>988
海溝は深いと言うべきだな。
0992デフォルトの名無しさん
NGNGしまいにゃ言えることはその程度かw。死ね。
0993デフォルトの名無しさん
NGNG最後に'\0'を2回付けたいのなら"〜\0"で十分では?
0994デフォルトの名無しさん
NGNG端から見てると単なるケンカにしか見えないから。
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG>char const * const p;
>p = "NULLPO";
>と書くと警告でちゃうぞ。
それはね、内容もアドレスも不変と宣言してるのに、宣言した時点より跡で代入してるから。
0997デフォルトの名無しさん
NGNG0998デフォルトの名無しさん
NGNG>それぐらい理解しろよ。
>人と話したことないのか ?
君ポインタの扱いが十分わかってないね。
関数のポインタなんて表現はありえない。
つまり、わかってる奴は絶対こういう表現はしない。
0999デフォルトの名無しさん
NGNGバーカ。こんなこと知ってるぐらいのことを何宣言してんだ。アホの活造りかおまえ。
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。