C++相談室 part96
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/06/30(土) 13:07:47.91ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part95
http://toro.2ch.net/test/read.cgi/tech/1336420524/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.78【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1331894668/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0002デフォルトの名無しさん
2012/06/30(土) 13:08:20.71[C++ FAQ]
http://www.parashift.com/c++-faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
Cとその仕様を比較しながらの解説なので分かりやすい。
***** 質問の前に必ずこの二つに目を通してください *****
[C/C++ リファレンス]
http://en.cppreference.com/w/cpp (英語)
http://ja.cppreference.com/w/cpp (↑の日本語訳だけどまだ未完)
[Stroustrup]
http://www2.research.att.com/~bs/
[C++ International Standard]
http://www.iso.org/iso/iso_catalogue/catalogue_ics/catalogue_detail_ics.htm?csnumber=50372
[JTC1/SC22/WG21 - C++]
http://www.open-std.org/jtc1/sc22/wg21/
ここから規格の最新ドラフトがダウンロードできる。
[JIS X3014]
http://www.jisc.go.jp/app/pager?%23jps.JPSH0090D:JPSO0020:/JPS/JPSO0090.jsp=&RKKNP_vJISJISNO=X3014
ISO規格の日本語訳。JIS X3014:2003はISO/IEC 14882:2003 (E)に対応。
0003デフォルトの名無しさん
2012/06/30(土) 13:08:52.69[Boost]
Boost http://www.boost.org/
(日本語) http://www.kmonos.net/alang/boost/
(日本語) http://shinh.skr.jp/boost/
[標準ライブラリ]
SGI-STL http://www.sgi.com/tech/stl/
STLport http://stlport.sourceforge.net/
GNU libstdc++ http://gcc.gnu.org/libstdc++/
Apache C++ Standard Library (STDCXX) http://stdcxx.apache.org/
STLFilt http://www.bdsoft.com/tools/stlfilt.html
(日本語) http://episteme.wankuma.com/stlprog/ (※1999年発行注意)
[Loki]
http://sourceforge.net/projects/loki-lib/
LokiPort-MSVC6sp5 http://fara.cs.uni-potsdam.de/~kaufmann/?page=lokiport
0004デフォルトの名無しさん
2012/06/30(土) 13:09:34.44amazon C,C++関連書籍
http://www.amazon.com/exec/obidos/tg/browse/-/3956/ref=br_bx_c_1_3/
http://www.amazon.co.jp/b/?node=754384
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/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714833/ (翻訳)
Exceptional C++ Style
http://www.amazon.com/exec/obidos/ASIN/0201760428/
http://www.amazon.co.jp/exec/obidos/ASIN/4894714663/ (翻訳)
0005デフォルトの名無しさん
2012/06/30(土) 13:10:09.27Effective 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/
C++ Template Metaprogramming
http://www.amazon.com/exec/obidos/ASIN/0321227255/
0006デフォルトの名無しさん
2012/06/30(土) 13:14:54.79/ /:::::; -‐''" `ーノ
/ /:::::/ \
/ /::::::/ | | | |
| |:::::/ / | | | | | |
| |::/ / / | | || | | ,ハ .| ,ハ|
| |/ / / /| ,ハノ| /|ノレ,ニ|ル'
| | | / / レ',二、レ′ ,ィイ|゙/ 私は只の数ヲタなんかとは付き合わないわ。
. | \ ∠イ ,イイ| ,`-' | 頭が良くて数学が出来てかっこいい人。それが必要条件よ。
| l^,人| ` `-' ゝ | さらに Ann.of Math に論文書けば十分条件にもなるわよ。
| ` -'\ ー' 人 一番嫌いなのは論文数を増やすためにくだらない論文を書いて
| /(l __/ ヽ、 良い論文の出版を遅らせるお馬鹿な人。
| (:::::`‐-、__ |::::`、 ヒニニヽ、 あなたの論文が Ann of Math に accept される確率は?
| / `‐-、::::::::::`‐-、::::\ /,ニニ、\ それとも最近は Inv. Math. の方が上かしら?
| |::::::::::::::::::|` -、:::::::,ヘ ̄|'、 ヒニ二、 \
. | /::::::::::::::::::|::::::::\/:::O`、::\ | '、 \
| /:::::::::::::::::::/:::::::::::::::::::::::::::::'、::::\ノ ヽ、 |
| |:::::/:::::::::/:::::::::::::::::::::::::::::::::::'、',::::'、 /:\__/‐、
| |/:::::::::::/::::::::::::::::::::::::::::::::::O::| '、::| く::::::::::::: ̄|
| /_..-'´ ̄`ー-、:::::::::::::::::::::::::::::::::::|/:/`‐'::\;;;;;;;_|
| |/::::::::::::::::::::::\:::::::::::::::::::::::::::::|::/::::|::::/:::::::::::/
| /:::::::::::::::::::::::::::::::::|:::::::::::::::::::::O::|::|::::::|:::::::::::::::/
0007デフォルトの名無しさん
2012/06/30(土) 13:34:52.460008デフォルトの名無しさん
2012/06/30(土) 13:40:29.800009デフォルトの名無しさん
2012/06/30(土) 13:52:22.49環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
0010デフォルトの名無しさん
2012/06/30(土) 15:47:13.84大丈夫か…
0011デフォルトの名無しさん
2012/06/30(土) 17:16:12.80?
0012デフォルトの名無しさん
2012/06/30(土) 19:14:04.690013デフォルトの名無しさん
2012/06/30(土) 20:07:11.89a = A(2);
としたとき、2行目で、1行目で生成されたインスタンスは消滅すると思いますが、
デストラクタは実行されないようです。
実行されるにはどうしたらいいでしょうか?
0014デフォルトの名無しさん
2012/06/30(土) 20:09:05.92二行目の「A(2)」は、ステートメントの最後でデストラクタが実行されるけど。
0015デフォルトの名無しさん
2012/06/30(土) 20:11:56.590016デフォルトの名無しさん
2012/06/30(土) 20:13:06.32新しい文法とライブラリ。autoの変更がかなり面白い。
ラムダで広がる関数周り。関数ポインタにもできなく無いらしい。
コンパイラさんの対応にあと5年はかかるかも。
0017デフォルトの名無しさん
2012/06/30(土) 20:14:01.692行目で生成されたテンポラリオブジェクト A(2) は消滅するけど
1行目で生成されたインスタンス a はそのままだよ
0018デフォルトの名無しさん
2012/06/30(土) 20:14:36.33関数ポインタにできるのは引数なしのやつだけかな
0019デフォルトの名無しさん
2012/06/30(土) 20:23:57.91002013
2012/06/30(土) 20:25:10.61aが消滅するときのデストラクタはA(2)のものです。
だから、Aの中で動的に領域をとっていると、
解放されないままになってしまいます。
newを使わないインスタンス作成をできなくしたり、
代入を禁止したりはできないでしょうか?
Aにoperator=を作るのが正当な解決策でしょうか?
0021デフォルトの名無しさん
2012/06/30(土) 20:28:19.89間違い。aの中身はA(2)のコピー。
C#かJavaから来た人かな?
0022デフォルトの名無しさん
2012/06/30(土) 20:31:47.85デストラクタ呼ばないとかどこの糞コンパイラ使ってんだ
0023デフォルトの名無しさん
2012/06/30(土) 20:33:42.75コピーと代入を禁止するにはprivateで宣言しておけばいい
何も宣言しないとデフォルトの定義が作られるから代入出来てしまう
private:
A(const A&);
A& operator=(const A&);
002413
2012/06/30(土) 20:33:52.52002513
2012/06/30(土) 20:41:30.84C++は難しいですが、いろいろ試してみます。
ありがとうございました。
002613
2012/06/30(土) 20:55:32.15~A1 が表示されてほしいんですが、
代入ではデストラクタが実行されないようなので、
無理ですね。
0027デフォルトの名無しさん
2012/06/30(土) 21:09:47.64これなら表示される
この例じゃあまり意味はないが
0028デフォルトの名無しさん
2012/06/30(土) 21:37:36.800029デフォルトの名無しさん
2012/06/30(土) 21:44:15.24お前にC++は無理。
0030デフォルトの名無しさん
2012/06/30(土) 22:26:53.13C++はCやBASIC、FORTRANなどと同じ、コピーが基本。
負荷は大きいけど、考えることは少ない。
一方、Javaは参照が基本。負荷は小さいけど、いつ複製が必要になるかについて注意が必要。
…みたいなことが、確かJ++セルフマスターブックとかいう本を読んだ時書いてあったなぁ。
J++って、いつの本だよ^q^
0031デフォルトの名無しさん
2012/06/30(土) 23:51:13.72そういう時はコピーを禁止する事も可能ではあるね
0032デフォルトの名無しさん
2012/07/01(日) 01:52:45.30デストラクタは「中身」の値ではなく、「入れ物」である変数が破棄されるタイミングで呼ばれる。
a = A(2); は入れ物ではなく、中身が変わっているだけだからデストラクタは呼ばれない。
理解を深めてもらうために付け加えると、 new 、delete とも「入れ物」を作ったり消しているだけで
「中身」そのものは弄ってませんよね。(中身も一緒に消えますが)
>20の問題を解決したいのであれば、「中身」が変わるタイミングで破棄する必要がある。
具体的に言うと>15で上がっている operator= と、コピーコンストラクタををオーバーロードするのが正解。
0033デフォルトの名無しさん
2012/07/01(日) 17:57:54.71するにはどうしたらいいでしょうか
クラスHogeにはメンバ int kazu と string moji がいて
Hoge a = 1; のときは new Hoge(1) が
Hoge a = "unko"; のときは new Hoge("unko");
が呼ばれるような感じがいいんだけど
0034デフォルトの名無しさん
2012/07/01(日) 18:07:21.060035デフォルトの名無しさん
2012/07/01(日) 18:11:59.11http://ideone.com/IYrm4
0036デフォルトの名無しさん
2012/07/01(日) 19:25:04.37ありがとう
なんとなくわかりました
0037デフォルトの名無しさん
2012/07/01(日) 19:25:49.03ってやるとき、 a は何にキャストされようとしているの?
0038デフォルトの名無しさん
2012/07/01(日) 19:32:50.14cout自体がoperator <<(int Value)とかのオーバーロードを持ってるから、オーバーロード検索でマッチする型を使う。
0039デフォルトの名無しさん
2012/07/01(日) 19:59:28.710040デフォルトの名無しさん
2012/07/01(日) 20:18:13.94まだないんじゃね?
BoostにあるAnyっていうライブラリがそれだと思う。
0041デフォルトの名無しさん
2012/07/01(日) 20:43:59.200042デフォルトの名無しさん
2012/07/01(日) 21:13:40.61え、あるの?どれどれ??
0043デフォルトの名無しさん
2012/07/01(日) 21:14:04.220044デフォルトの名無しさん
2012/07/01(日) 21:14:40.30{
public:
template<int i> int get() const { return i; }
template<> int get<0>() const { return 1; }
};
みたいなことをやりたいのですが、メンバ関数テンプレートで定数による特殊化はできないのでしょうか?
0045デフォルトの名無しさん
2012/07/01(日) 21:24:34.48C++11より前だと関数の部分特殊化は無理だからねぇ
0046デフォルトの名無しさん
2012/07/01(日) 21:28:38.11http://ideone.com/CZqo9
「テンプレート メンバ関数 特殊化」でググッたら方法出てきたよ
宣言ごとクラス外に書けってさ
0047デフォルトの名無しさん
2012/07/01(日) 22:20:23.95ありがとう、できました
0048デフォルトの名無しさん
2012/07/01(日) 23:41:33.730049デフォルトの名無しさん
2012/07/02(月) 00:51:07.050050デフォルトの名無しさん
2012/07/02(月) 01:23:56.40template<int I,int D=0>struct getobj{operator int()const{return I;}};
template<int D>struct getobj<0,D>{operator int()const{return 1;}};
template<int I>const getobj<I>get(){return getobj<I>();} };
だな。
0051デフォルトの名無しさん
2012/07/02(月) 08:47:31.52変換関数を使う手もあるな
型が曖昧だと無視されたりするから素直じゃない所があるけど
0052デフォルトの名無しさん
2012/07/02(月) 10:41:39.05もう少し正確に頼むわ
0053デフォルトの名無しさん
2012/07/02(月) 11:14:45.67http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/
0054デフォルトの名無しさん
2012/07/02(月) 12:53:50.79例) typedef void v;
これでvと書けばvoidの意味になります。
それではこれはどうでしょう?
typedef void (*SIG_TYPE) (int);
何に対してどういう名前を与えたのですか?
0055デフォルトの名無しさん
2012/07/02(月) 12:55:27.630056デフォルトの名無しさん
2012/07/02(月) 13:00:59.57ありがごうございます。
じゃぁ voidに(*SIG_TYPE)(int)という名前を付ける事は出来ないんですね。
そもそも名前に()が入っちゃダメだからそういう心配は要らなさそうですね。
0057デフォルトの名無しさん
2012/07/02(月) 13:33:16.90形としては、変数宣言と同じだと思っていいよ。
0058デフォルトの名無しさん
2012/07/02(月) 13:38:21.69ですよね。ありがとうございます。
なんかトークンを置き換えるみたいなイメージがありました…。
0059デフォルトの名無しさん
2012/07/02(月) 15:23:11.850060デフォルトの名無しさん
2012/07/02(月) 22:35:54.13書かなくてもいいの?
書いてもすること無いけどさ
0061デフォルトの名無しさん
2012/07/02(月) 22:45:13.420062デフォルトの名無しさん
2012/07/03(火) 00:45:13.090063デフォルトの名無しさん
2012/07/03(火) 00:58:20.89ストリームを読んで、Aって文字列が来たらクラスHogeAの
Bって文字列が来たらクラスHogeBのオブジェクトをnewして
配列hogelistにどんどん追加していく処理をするとき、
0064デフォルトの名無しさん
2012/07/03(火) 01:01:11.31鼻から悪魔を出すにはどうしたら良いでしょうか
006563
2012/07/03(火) 01:05:46.85普通はファクトリークラスHogeFactoryとかを作ると思うんですが、
ユーザがHogeの派生がどんどん増やしたときにHogeFactoryを
直接いじらせず、継承させて生産ラインを追加させたいときは
どうしたらかっこういいでしょうか
0066デフォルトの名無しさん
2012/07/03(火) 06:56:16.96factorys[ "A" ] = new Factory<ExampleA>();
factorys[ "B" ] = new Factory<ExampleB>();
if( factorys.end() != factorys.find( key ) )
{
Example *examle = factorys[ key ]->New();
}
0067デフォルトの名無しさん
2012/07/03(火) 10:24:25.53あー、なるほど
これいいかもですね
ありがとうございます
0068デフォルトの名無しさん
2012/07/03(火) 13:06:11.88環境が違うせいでNDKで動く処理が作れません。
ICU、iconvはコンパイルがうまくいかない。
babelは変換処理が正しく動かない。
マルチバイト確認や変換する関数はNDKでは使えないという感じで、
文字コードをうまく変換するいい手段は無いでしょうか?
0069デフォルトの名無しさん
2012/07/03(火) 13:33:09.94Android OS&アプリは個人情報ダダ漏れ★9
http://anago.2ch.net/test/read.cgi/smartphone/1335343114/
0070デフォルトの名無しさん
2012/07/03(火) 13:37:35.69ICU使えって書いてあるらしいからコンパイル頑張れ
https://groups.google.com/forum/#!msg/android-group-japan/kEutty0IWjA/8T4YhZXFqawJ
0071デフォルトの名無しさん
2012/07/03(火) 21:05:05.67を削除するとき、全要素についてdeleteしたいとき
どうしたらいいの?
0072デフォルトの名無しさん
2012/07/03(火) 21:11:15.930073デフォルトの名無しさん
2012/07/03(火) 21:17:55.34clear() を呼ぶと、ついでにUnkoのデストラクタも呼ばれるの?
0074デフォルトの名無しさん
2012/07/03(火) 21:19:19.790075デフォルトの名無しさん
2012/07/03(火) 21:32:33.310076デフォルトの名無しさん
2012/07/03(火) 21:37:04.61ありがとう
0077デフォルトの名無しさん
2012/07/03(火) 23:07:26.090078デフォルトの名無しさん
2012/07/03(火) 23:08:43.28コテを付け忘れてるぞuy
0079デフォルトの名無しさん
2012/07/03(火) 23:49:58.740080デフォルトの名無しさん
2012/07/04(水) 00:40:24.150081デフォルトの名無しさん
2012/07/04(水) 11:26:16.00将棋のAIを作っていたのですが、速度の壁に阻まれ、いろいろアルゴリズムを変えて3割ほど速度アップに成功しましたが、目標タイムには到達しえませんでした。
限界を感じてC++はどうかと考えたのですが、Java→C++で速度アップは図れるものでしょうか。
主な処理は配列の個々の値計算、オブジェクトの生成・消滅がわりと頻繁にでてくるプログラムです。
0082デフォルトの名無しさん
2012/07/04(水) 11:41:22.74オブジェクトの生成・破棄は爆発的に早くなる。
…そのかわり、全部自分でコントロールしなくちゃいけないけどねー。
0083デフォルトの名無しさん
2012/07/04(水) 11:43:56.36一番クリティカルなのは言語よりアルゴリズム
0084デフォルトの名無しさん
2012/07/04(水) 11:49:30.00そのアルゴリズム内でガーベージコレクタを動かす部分があって、
更にC++の素朴なスコープ或いは参照カウンタ方式でメモリ管理を置き換えできれば確かに速くなるから
半分正解で半分間違い。
まぁ具体的な実装を見てみないとなんとも言えませんな。
0085デフォルトの名無しさん
2012/07/04(水) 12:08:50.84C++でチャレンジしようと思えるようになりました、ありがとうございます!
0086デフォルトの名無しさん
2012/07/04(水) 12:35:29.33webだと気軽に匿名でソース公開する訳にもいかんだろうし。
0087デフォルトの名無しさん
2012/07/04(水) 12:49:24.04-serverオプション含めJIT周りの方が影響でかい
0088デフォルトの名無しさん
2012/07/04(水) 13:45:56.35http://d.hatena.ne.jp/ak11/20120417
0089デフォルトの名無しさん
2012/07/04(水) 21:14:51.55ベクトルにnewしたインスタンスを入れたいんですが入れたものを削除するプログラムっていうのはvectorにインスタンス自体じゃなくてポインタを入れればいいんでしょうか
0090デフォルトの名無しさん
2012/07/04(水) 21:27:55.720091デフォルトの名無しさん
2012/07/04(水) 21:36:20.030092デフォルトの名無しさん
2012/07/04(水) 21:49:06.03VC++10でstd::vector<std::unique_ptr>を使うと幸せになれる
0093デフォルトの名無しさん
2012/07/04(水) 22:15:03.97糸口をつかめました 感謝します
0094デフォルトの名無しさん
2012/07/04(水) 22:27:54.640095デフォルトの名無しさん
2012/07/04(水) 22:35:30.470096デフォルトの名無しさん
2012/07/04(水) 22:37:16.370097デフォルトの名無しさん
2012/07/04(水) 23:27:59.410098デフォルトの名無しさん
2012/07/05(木) 00:40:24.340099デフォルトの名無しさん
2012/07/05(木) 00:57:41.14規格準拠率の話をしてただけじゃん?
0100デフォルトの名無しさん
2012/07/05(木) 08:13:54.880101デフォルトの名無しさん
2012/07/05(木) 10:48:47.52わからんなら黙ってろ
0102デフォルトの名無しさん
2012/07/05(木) 11:35:57.040103デフォルトの名無しさん
2012/07/05(木) 11:38:36.320104デフォルトの名無しさん
2012/07/05(木) 11:43:34.77処理系依存は言語仕様の話なので、その"処理系に依る"話とは関係無いと思う。
0105デフォルトの名無しさん
2012/07/05(木) 12:53:57.39g++ 4.4でstd::shared_ptrが使えるかどうかの記述は、C++の規格にありません。
でも、これぐらいいいじゃない馬鹿!
0106デフォルトの名無しさん
2012/07/05(木) 15:33:51.210107デフォルトの名無しさん
2012/07/05(木) 15:52:03.75implementation-defined なら well-formed だろうが
0108デフォルトの名無しさん
2012/07/05(木) 16:48:13.180109デフォルトの名無しさん
2012/07/05(木) 18:44:08.04Aに virtual な関数を作って、Cでその関数を定義するとき
Bにも空でもいいから関数を書かないとだめなの?
0110デフォルトの名無しさん
2012/07/05(木) 18:46:01.69それとも規格票の箇条でそう読めてしまうところでもあったのか?
0111デフォルトの名無しさん
2012/07/05(木) 18:54:45.33やってみたらなんか書かないとダメだったんだけど、
そんなわけないよなーと思って聞いてみた
やっぱ飛ばして継承出来るハズだよね
おれのバグとわかってスッキリしたわ直す
0112デフォルトの名無しさん
2012/07/05(木) 19:03:03.59http://www.textdrop.net/google-styleguide-ja/cppguide.xml
0113デフォルトの名無しさん
2012/07/05(木) 20:00:00.37また継承するのならいいが
0114デフォルトの名無しさん
2012/07/05(木) 20:06:16.70呼ばれるようにしたいときは どうすればいいのかね
呼ばせるのを義務付ける方法とかでもいいや
0115デフォルトの名無しさん
2012/07/05(木) 20:18:53.55class B{
private: virtual void foo_impl( ) = 0;
public: void foo(){ /*code*/ foo_impl( ); /*code*/ }
};
class D{
private: void foo_impl() /*override*/ { /* code_here */ }
};
0116デフォルトの名無しさん
2012/07/05(木) 20:22:58.56ごめんよくわかんね
0117デフォルトの名無しさん
2012/07/05(木) 20:34:10.840118デフォルトの名無しさん
2012/07/05(木) 20:36:39.630119デフォルトの名無しさん
2012/07/05(木) 20:44:46.76呼ぶときはfoo()でいいの?
どんどん継承したときはどうなるんだこれ
0120デフォルトの名無しさん
2012/07/05(木) 20:46:42.90http://ideone.com/B1tY7
作った後見たらカオス・・・。Orz
0121デフォルトの名無しさん
2012/07/05(木) 20:53:08.180122デフォルトの名無しさん
2012/07/05(木) 21:00:38.030123デフォルトの名無しさん
2012/07/05(木) 21:27:17.23具体的にはwindowsのOPENFILENAME構造体のサイズを64bit環境下でも正しく取得したいです
0124デフォルトの名無しさん
2012/07/05(木) 21:33:35.49アラインメントというのは、構造体の先頭の場所のことなのか、要素の整列のことなのか・・・。
addressOfっていうマクロが世の中にはあるんだけどそれを使えば、要素のアライン状況はわかるよ。
addressOf(LastElement)+sizeof(LastElement);
でわかるかも??
0125デフォルトの名無しさん
2012/07/05(木) 21:35:56.150126デフォルトの名無しさん
2012/07/05(木) 21:36:54.01sizeofですむんだったらソッチのほうがいいよな。
0127デフォルトの名無しさん
2012/07/05(木) 21:37:10.53addressOf(LastElement) - addressOf(FirstElement) + sizeof(LastElement)ですかね?
0128デフォルトの名無しさん
2012/07/05(木) 21:38:00.19sizeofだと各要素のサイズの単なる合計が返ってきているように思えますが
なにかアライメントまで考慮させる方法ってありますかね?
0129デフォルトの名無しさん
2012/07/05(木) 21:47:51.34どうしたら簡単?
0130デフォルトの名無しさん
2012/07/05(木) 21:48:28.52黒魔術なんで、環境によっては動かないかもしれないが、こんなかんじだ。
ttp://ideone.com/TY3kv
0131デフォルトの名無しさん
2012/07/05(木) 21:50:12.60std::getline
0132デフォルトの名無しさん
2012/07/05(木) 22:00:04.85やってみる
0133デフォルトの名無しさん
2012/07/05(木) 22:01:06.60こんな方法があるんですね、そして大変なことがわかりました
構造体の要素は別にアライメントされていませんでした・・・orz
OPENFILENAMEには自身のサイズを格納させる場所があるんですが、
じゃあいったい何を格納すれば動いてくれるんですか・・・またお世話になるかもしれません
ありがとうございました
0134デフォルトの名無しさん
2012/07/05(木) 22:04:59.30それ、多分sizeofでいいと思うよ。
0135デフォルトの名無しさん
2012/07/05(木) 22:05:11.69でなんの問題もないだろ
0136デフォルトの名無しさん
2012/07/05(木) 22:10:52.90コンパイルエラーになった
0137デフォルトの名無しさん
2012/07/05(木) 22:13:04.90状況は64bit win7で、vc2008のプロジェクト設定で構造体のアライメントを1,2,4,8,16と変えていくと
8,16のみ正常に動作し、ファイルを選択するダイアログが開くのですが
1,2,4の場合ファイルを選択するダイアログが開かず、キャンセルボタンが押されたような返り値が返ってきます
サイズを調べてみたところ違っていたのでアライメントまで考慮しなければならないのかと思った次第でした
0138デフォルトの名無しさん
2012/07/05(木) 22:15:17.670139デフォルトの名無しさん
2012/07/05(木) 22:16:45.280140デフォルトの名無しさん
2012/07/05(木) 22:18:50.61ググってみると似たような状況が出てきましてやはりアライメントの問題だの
言われていますがほとんどが英語で要領を得ず、です
0141デフォルトの名無しさん
2012/07/05(木) 22:20:33.17そりゃそうだろGetOpenFileNameが期待してる構造体のサイズ以外のサイズを渡してるんだから
commdlg.hからOPENFILENAME構造体を適当にぱくってきて
#pragma packで一時的にアライメントを変更してやればいい
0142デフォルトの名無しさん
2012/07/05(木) 22:28:38.080143デフォルトの名無しさん
2012/07/05(木) 22:46:45.10と書いてあるんだからsizeofでやれ
アライメント変更によって型定義を壊してるのに見当違いのことを喚くな
0144デフォルトの名無しさん
2012/07/05(木) 22:52:33.83だから最小単位の関数に分割する。
それはいいんだが、今度は関数が増えすぎてその管理が煩雑になりそう。
その対策としてクラスを作り private 静的メンバ関数にするというのは妥当?
例えば、
namespace MyFunctions {
template <class T> T func1(T x) { ちゅっちゅー } // 隠したい。
template <class T> T func2(T x) { ちゅっちゅー } // 隠したい。
template <class T> T func(T x) { func1(func2(x)) ちゅっちゅー } // 使ってほしい。
}
というのを
class MyFunctions {
template <class T> static T func1(T x) { ちゅっちゅー } // 隠したい。
template <class T> static T func2(T x) { ちゅっちゅー } // 隠したい。
public:
template <class T> static T func(T x) { func1(func2(x)) ちゅっちゅー } // 使ってほしい。
};
とするという対策しか思いつかなかったんだが。
みんなはどうしてる?
0145デフォルトの名無しさん
2012/07/05(木) 22:59:13.320146デフォルトの名無しさん
2012/07/05(木) 22:59:29.1564ビット下では8ビット以上のアライメントが当然期待されているってことですかね・・・
とりあえずその案を試させて頂きます
>>143
>アライメント変更によって型定義を壊している
すいません、ここ詳しくお願いできますか?
ポインタなどのサイズがアライメントで変更されうるということでしょうか?
0147デフォルトの名無しさん
2012/07/05(木) 22:59:42.310148デフォルトの名無しさん
2012/07/05(木) 23:06:50.23ありがとうございます。
0149デフォルトの名無しさん
2012/07/05(木) 23:12:07.08windows.h とかで構造体が定義されている場合、普通 #pragma pack とかでアラインメントは強制されている。
つまり、「vc2008のプロジェクト設定で構造体のアライメントを1,2,4,8,16と変えて」 sizeof の結果が変わること自体がおかしい。
0150デフォルトの名無しさん
2012/07/05(木) 23:25:32.69だからアライメント変更でこういう問題が起きる
0151デフォルトの名無しさん
2012/07/05(木) 23:34:55.69外部に公開するんだったら頑張って管理する。
>>144
そういうのモノステートパターンっていうんじゃないの?
0152デフォルトの名無しさん
2012/07/05(木) 23:35:28.03あーものすごく納得しました
重ね重ねありがとうございました、勉強になりました
0155デフォルトの名無しさん
2012/07/06(金) 00:11:59.43ものステートでぐぐったら一番最初に出てくるページがホラ吹いてるけど
あれはモノステートじゃない。モノステートは、static変数メンバーを
主体としたクラス。メンバー関数がすべてstaticってのは間違い。
http://c2.com/cgi/wiki?MonostatePattern
0156デフォルトの名無しさん
2012/07/06(金) 00:22:42.54そもそも処理系依存なpackなんて使うなっつう話だろ
入出力は面倒でもメンバー1個1個指定するか、
配列で一括読み込してキャストしながら読み書きする。
読み書きでメンバーを同じ数並べるのが面倒というなら、
テンプレート使って読み書きを一つにしてやればいい。
arc.Archiving( this->member1 );
arc.Archiving( this->member2, 100 );
// 読み込みの際はarcを読み込みオブジェクトに
// 書き込みの際はarcを書き込みオブジェクトにしてやる
0157デフォルトの名無しさん
2012/07/06(金) 00:32:21.060158デフォルトの名無しさん
2012/07/06(金) 08:03:15.14Type minof(const Type *x, int n){
Type min = x[0];
for(int i=1;i<n;i++)
if(min > x[i])
min = x[i];
return min;
}
template <>
const char* minof<const char*>(const char** x,int n){
const char* min = x[0];
for(int i=1;i<n;i++)
if(strcmp(min,x[i])>0)
min = x[i];
return min;
}
int main(int argc, char** argv){
char const *s[3]={"ABC","AAA","ADD"};
cout << "sで小さいのは" << minof<const char*>(s,3) << endl;
}
配列の全要素の最小値を求める関数テンプレートの作成なのですが、もっとも小さい文字列を求めるための特殊化がうまくいきません
エラー: template-id ‘minof<const char*>’ for ‘const char* minof(const char**, int)’ does not match any template declaration
とエラーが出て、特殊化部分が標準テンプレートとマッチせずおそらくポインタへのポインタの扱いだと思うのですが
どう直せばプログラムが動くでしょうか?
0159158
2012/07/06(金) 08:32:09.81const char* = int,etc
とするために、
template <class Type> Type minof(type *x, int n)
とするか、
配列の中身を書き換えたくないという意を保つなら
template <>
const char* minof<const char*>(const char* const (*x),int n)
でやると通りました・・・
constの扱いで頭おかしくなりそうです、これで本当に合っているのか
int x[]=const char (*x)[]
int x[0]の書き込み禁止=const char (*x)[0]の書き込み禁止
↓
const int *x = const char* const (*x)でしょうかね
0160デフォルトの名無しさん
2012/07/06(金) 09:17:32.543じゃなく、sizeof()を使った方が良くない?
0161デフォルトの名無しさん
2012/07/06(金) 10:19:42.52関数呼び出し部は確かにそうしたほうが良いですね
忠告ありがとうございます
0162デフォルトの名無しさん
2012/07/06(金) 11:03:16.31素直にmin_element使え
#include <cstring>
#include <algorithm>
#include <iostream>
bool less_str(char const * p1, char const * p2)
{
return std::strcmp(p1, p2) < 0;
}
int main(int argc, char** argv){
using namespace std;
char const *s[3]={"ABC","AAA","ADD"};
cout << "sで小さいのは" << *min_element(&s[0], &s[3], less_str) << endl;
}
0163デフォルトの名無しさん
2012/07/06(金) 21:36:06.85クラスAと、それを継承したB があります。
A *a = new B;
としたときに、 *aに格納されているのが AなのかBなのかを
gdbで確認したいのですが、どうしたら型情報を見れるでしょうか。
ptype(*a) としても、出力されるのは A の構造になってしまいます。
0164デフォルトの名無しさん
2012/07/06(金) 21:41:27.570165デフォルトの名無しさん
2012/07/06(金) 22:02:47.50class A{
private:
B b;
public:
A(B b){ this->b = b;}
}
コンストラクタであるオブジェクトのコピーをフィールドに入れたいのですがこれであっていますか。
ちなみに参照ではなくコピーをいれたいのです。
0166デフォルトの名無しさん
2012/07/06(金) 22:04:16.470167デフォルトの名無しさん
2012/07/06(金) 22:04:23.82Javaの癖でついフィールドと書いてしまいました
0168デフォルトの名無しさん
2012/07/06(金) 22:05:18.25ありがとうございます!
0169デフォルトの名無しさん
2012/07/06(金) 22:26:32.76実際のとこ今はどうなんかね。後輩がWeb系行ってStrutsなんて
ダイッキライ!っていってたけど、相変わらずOOとは縁遠い言語ならっとんのかなぁ。
0170デフォルトの名無しさん
2012/07/06(金) 22:38:55.65ラノベのタイトルみたいだな
0171デフォルトの名無しさん
2012/07/06(金) 22:53:45.350172デフォルトの名無しさん
2012/07/06(金) 23:04:19.930173デフォルトの名無しさん
2012/07/06(金) 23:16:07.120174デフォルトの名無しさん
2012/07/06(金) 23:17:20.880175デフォルトの名無しさん
2012/07/06(金) 23:30:48.56調べたところ、オブジェクトのコピーが返されて関数にあったオブジェクトは破棄されるらしいのですが、パフォーマンス的にもっと優れた方法はないでしょうか
0176デフォルトの名無しさん
2012/07/06(金) 23:32:46.30#include <typeinfo>
class A {
int a;
public:
A(int i) : a(i) {}
virtual void print() const {
std::cout << a << std::endl;
std::cout << typeid(*this).name() << std::endl;
}
};
class B : public A {
int a;
public:
B(int i) : a(i), A(0) {}
void print() const {
std::cout << a << std::endl;
std::cout << typeid(*this).name() << std::endl;
}
};
int main()
{
A* a = new B(100);
a->print();
}
0177デフォルトの名無しさん
2012/07/06(金) 23:33:57.10Factoryとかで生成したオブジェクトのポインタならいいっぺよ
ただしスマポに包んでおかないとdeleteする責任の所在があやふやになるっぺ
0178デフォルトの名無しさん
2012/07/06(金) 23:50:04.91なるほど、そのようにするとパフォーマンスに優れますね。
ありがとうございます!
0179デフォルトの名無しさん
2012/07/07(土) 03:14:31.30gdbでお願いします
0180デフォルトの名無しさん
2012/07/07(土) 09:22:21.440181デフォルトの名無しさん
2012/07/07(土) 09:54:21.87してる
0182デフォルトの名無しさん
2012/07/07(土) 09:55:14.040183デフォルトの名無しさん
2012/07/07(土) 11:35:45.92変数ウィンドゥではBのインスタンスを代入しても型がA*のままだな
右クリックから「型にキャスト」でB*にしたらちゃんと全ての要素が表示された
で、「オリジナル型の復元」でA*に戻る
a->print()で仮想関数が実行されてB::print()の中に入ると変数ウィンドゥ
の型が const B* constに変わりちゃんとBの要素が表示される
これ多分gdbの実行結果と同じだよね
だからポインタの先の実際の型までは表示してなくて、thisに変わった時に
初めて表示されるようだ
0184デフォルトの名無しさん
2012/07/07(土) 11:50:18.47大概商業高校出身だろ
0185デフォルトの名無しさん
2012/07/07(土) 14:10:01.920186デフォルトの名無しさん
2012/07/07(土) 14:31:29.190187デフォルトの名無しさん
2012/07/07(土) 15:29:25.240188デフォルトの名無しさん
2012/07/07(土) 15:33:34.45Aが仮想関数を持っているなら
(gdb) set print object on
して
(gdb) whatis a
や
(gdb) ptype a
でわかる
0189デフォルトの名無しさん
2012/07/07(土) 15:50:09.84// hoge.cpp (UTF-8Nで保存)
int main(void) {
puts("日本語の文字列"); // <-これはUTF-8N?
return 0;
}
0190デフォルトの名無しさん
2012/07/07(土) 15:53:32.73いいえ
0191デフォルトの名無しさん
2012/07/07(土) 15:53:37.73って、今でもダメですか?
0192デフォルトの名無しさん
2012/07/07(土) 17:00:35.900193デフォルトの名無しさん
2012/07/07(土) 17:02:53.24処理系依存
0194デフォルトの名無しさん
2012/07/07(土) 17:04:25.37そのプログラムが終了コードに何を返すか分かるか?
0195デフォルトの名無しさん
2012/07/07(土) 17:35:26.86なにも返しません
0196デフォルトの名無しさん
2012/07/07(土) 17:37:38.36どうしてそういう持ってまわった言い方をするの?
直接的な表現が宗教的な理由でできないの?
0197デフォルトの名無しさん
2012/07/07(土) 17:42:28.43で?
0198デフォルトの名無しさん
2012/07/07(土) 18:14:34.15答:よく分からない値を返す
0199デフォルトの名無しさん
2012/07/07(土) 18:36:38.330200デフォルトの名無しさん
2012/07/07(土) 18:44:29.090201デフォルトの名無しさん
2012/07/07(土) 18:54:53.920202デフォルトの名無しさん
2012/07/07(土) 19:08:41.220203デフォルトの名無しさん
2012/07/07(土) 19:16:09.220204デフォルトの名無しさん
2012/07/07(土) 19:16:40.82make の流儀を強制しているいかにもアチラな尊大さだ
0205デフォルトの名無しさん
2012/07/07(土) 19:21:58.811が正常終了というのが自然
0206デフォルトの名無しさん
2012/07/07(土) 19:28:15.400207デフォルトの名無しさん
2012/07/07(土) 19:28:55.44wwwwwwwwwwwwww
お前才能あるwww
0208デフォルトの名無しさん
2012/07/07(土) 19:29:32.47腹筋崩壊wwwww
0209デフォルトの名無しさん
2012/07/07(土) 19:30:02.85ちょww牛乳ふいたじゃねーかwww
0210デフォルトの名無しさん
2012/07/07(土) 19:35:24.710211デフォルトの名無しさん
2012/07/07(土) 20:04:22.450212デフォルトの名無しさん
2012/07/07(土) 20:21:35.750213デフォルトの名無しさん
2012/07/08(日) 01:51:53.47みたいに簡潔に書きたい
0214デフォルトの名無しさん
2012/07/08(日) 03:15:35.45C++11にご期待ください。
0215デフォルトの名無しさん
2012/07/08(日) 03:18:45.240216デフォルトの名無しさん
2012/07/08(日) 04:06:33.170217デフォルトの名無しさん
2012/07/08(日) 08:45:48.09生産性あがるのも納得だわ
0218デフォルトの名無しさん
2012/07/08(日) 10:09:18.580219デフォルトの名無しさん
2012/07/08(日) 11:12:15.56途中からC#の尻を追い掛けるようになっちゃってるけどね
0220デフォルトの名無しさん
2012/07/08(日) 11:22:02.81テンプレートも無いよ
テンプレート様にはおよびもしないがジェネリックがある
0222デフォルトの名無しさん
2012/07/08(日) 12:00:32.030223デフォルトの名無しさん
2012/07/08(日) 12:19:26.42中身はポインタだらけだよ
GCを実装しているので特別な仕組みになってるけど
0224デフォルトの名無しさん
2012/07/08(日) 13:12:23.760225デフォルトの名無しさん
2012/07/08(日) 13:13:41.880226デフォルトの名無しさん
2012/07/08(日) 13:14:16.440227デフォルトの名無しさん
2012/07/08(日) 14:33:30.60今もHSPしかやってない
このスレはひやかしに来るだけ
0228デフォルトの名無しさん
2012/07/08(日) 15:58:44.360229デフォルトの名無しさん
2012/07/08(日) 16:13:33.33function(C++クラスのインスタンスへのポインタ, functionの引数)
みたいなラッパー関数書きまくって頑張りなさい
0230デフォルトの名無しさん
2012/07/08(日) 16:18:53.660231228
2012/07/08(日) 16:19:34.460232デフォルトの名無しさん
2012/07/08(日) 17:04:04.110233デフォルトの名無しさん
2012/07/08(日) 17:36:49.050234デフォルトの名無しさん
2012/07/08(日) 20:06:40.02ハンドルをポインター言い始めたら関接参照全部がポインターになるだろうが。
0235デフォルトの名無しさん
2012/07/08(日) 21:33:05.970236デフォルトの名無しさん
2012/07/09(月) 10:19:30.01全部ポインタでいいんじゃないの?
0237デフォルトの名無しさん
2012/07/09(月) 10:38:00.79参照もポインタだと思ってる
0238デフォルトの名無しさん
2012/07/09(月) 11:10:10.380239デフォルトの名無しさん
2012/07/09(月) 11:12:30.390240デフォルトの名無しさん
2012/07/09(月) 11:12:45.90でも保証はないよ
0241デフォルトの名無しさん
2012/07/09(月) 12:45:28.800242デフォルトの名無しさん
2012/07/09(月) 12:47:47.44やっと理解できたwwww
0243デフォルトの名無しさん
2012/07/09(月) 13:03:59.98よっ!低脳クン!
0244デフォルトの名無しさん
2012/07/09(月) 13:16:08.950245デフォルトの名無しさん
2012/07/09(月) 13:22:02.24ゴミカスのお前が作る規模のゴミカスプログラムならそんなことは考えなくていい
0246デフォルトの名無しさん
2012/07/09(月) 13:25:46.19コテ外してレスすんな
0247デフォルトの名無しさん
2012/07/09(月) 13:28:47.95ゴミカスは黙ってろ
0248デフォルトの名無しさん
2012/07/09(月) 13:43:04.39newと同じ類のもの、mallocとかVirtualAlloc(windows)とかも使ってなければね。
でもopenしたファイルなどの「解放が必要なもの」はメモリと同じく注意する必要があるし
例外の絡みもあるので、基本的にC++ではRAIIという概念で管理する。
メモリもリソースも全部RAIIで扱えば楽だよ。
要はコンストラクタでopen(new)してデストラクタでclose(delete)する。
0249デフォルトの名無しさん
2012/07/09(月) 13:53:47.47RAII初めて知りました
ありがとうございます!
0250デフォルトの名無しさん
2012/07/09(月) 14:00:51.750251デフォルトの名無しさん
2012/07/09(月) 14:02:55.730252デフォルトの名無しさん
2012/07/09(月) 14:04:39.300253デフォルトの名無しさん
2012/07/09(月) 14:40:51.600254デフォルトの名無しさん
2012/07/09(月) 14:52:57.510255デフォルトの名無しさん
2012/07/09(月) 15:13:26.600256デフォルトの名無しさん
2012/07/09(月) 15:15:20.000257デフォルトの名無しさん
2012/07/09(月) 15:19:13.65いやお前がわかってないよ
0258デフォルトの名無しさん
2012/07/09(月) 15:23:42.08いやお前がわかってないよ
0259デフォルトの名無しさん
2012/07/09(月) 15:25:05.69やれやれだね
0260デフォルトの名無しさん
2012/07/09(月) 15:28:49.99こんな思考じゃ首くくる羽目になるのも当然だな
0261デフォルトの名無しさん
2012/07/09(月) 15:30:03.53違うと言うならRAIIで完璧なコード書いてみろや
0262デフォルトの名無しさん
2012/07/09(月) 15:41:07.54それぞれどんなコードを見せてくれるのか興味津々
0263デフォルトの名無しさん
2012/07/09(月) 15:44:32.30file << "test";
完璧だろ
0264デフォルトの名無しさん
2012/07/09(月) 15:47:59.580265デフォルトの名無しさん
2012/07/09(月) 15:58:32.16デストラクタ前にclose呼べばいいだけだしな
RAIIに、デストラクタでしか解放してはいけないなんて制限は無いし
0266デフォルトの名無しさん
2012/07/09(月) 16:02:07.970267デフォルトの名無しさん
2012/07/09(月) 16:06:49.860268デフォルトの名無しさん
2012/07/09(月) 16:23:45.41>>255の言うRAIIが無力になるコードを見てみたいな
普通に興味がある
0269デフォルトの名無しさん
2012/07/09(月) 21:08:09.83close()じゃなくてflush()してbad()だろ。
close()で失敗した場合は、close()の後に失敗したエラーを検知できん。
0270デフォルトの名無しさん
2012/07/09(月) 21:14:59.59ポインター以外の関接参照は、アドレスを指してない場合が多い。
参照できるだけで見れば似てるが、委細が大きく違うんで
参照全部を引っ括めて呼ぶんなら間接参照と呼ぶべきだ。
間接参照 ⊇ { ポインター, ハンドル, ディスクリプター, リンク, 他・・・ }
0271デフォルトの名無しさん
2012/07/09(月) 23:34:50.14while(true){
size = nextReadSize(); // 何Byteファイルから読み込むか計算する
if(cSize > size){
free(cache);
cache = (char*)malloc(size);
}
if(breakCheck()) break; // ファイル読み込みが出来ない場合ループ終了
fread(cache, 1, size, fp);
}
free(cache);
プログラムの中にこんなソース仕込んだら、プログラムがエラー無しでストップするようなエラーが出るようになったんだけど、
これってやっぱりダメなのかな?
それともこれとは全く別の所にミスがあってプログラム止まってるのかな?
0272271
2012/07/09(月) 23:36:11.990273デフォルトの名無しさん
2012/07/09(月) 23:58:44.120274デフォルトの名無しさん
2012/07/10(火) 00:00:10.820275デフォルトの名無しさん
2012/07/10(火) 00:10:36.780276デフォルトの名無しさん
2012/07/10(火) 00:13:08.40お前のようなゴミカスには無理
0277デフォルトの名無しさん
2012/07/10(火) 00:54:04.11なんだこれ。
0278デフォルトの名無しさん
2012/07/10(火) 00:56:55.40それ、どう考えてもcSize < sizeじゃないのか?
sizeがcSizeを上回ると確実に破綻するぞ。
0279デフォルトの名無しさん
2012/07/10(火) 00:57:33.27スタックオーバーフローとかでよく見るけど、メモリースマッシュかも知れないし、0割かも知れない。
0280デフォルトの名無しさん
2012/07/10(火) 00:59:30.000281デフォルトの名無しさん
2012/07/10(火) 01:00:33.270282デフォルトの名無しさん
2012/07/10(火) 01:05:48.86要は、メッセージを伴わないエラーと言いたいのかそうでないのかはっきりしろと。
0283デフォルトの名無しさん
2012/07/10(火) 01:16:31.610284デフォルトの名無しさん
2012/07/10(火) 04:30:52.330285デフォルトの名無しさん
2012/07/10(火) 05:51:27.27スレチでしたら誘導頂けると幸いです。
O表記法についてなのですが、イマイチ理解できていません。
授業にて以下7つのルールを定義されたのですが
各々について具体的な数字の入った例をいただけませんでしょうか
#数学の勉強が足りないのかもしれませんが、具体的な数字があれば理解できると認識しています。
#宿題ではないのですが、以降のテストで以下ルールを適用しながらアルゴリズムの証明を行う問題が出題される予定です。
1). if f(n) ∈ O(g(n)) and g(n) ∈ O(h(n)) then f(n) ∈ O(h(n))
2). if f(n) ∈ O(h(n)) and g(n) ∈ O(h(n)) then f(n) + g(n) ∈ O(h(n))
3). an^k ∈ O(n^k)
4). n^k ∈ O(n^k+j) for any j
5). if f(n) = cg(n) then f(n) ∈ O(g(n))
6). loga n ∈ O(logb n) O(logn)
7). loge n ∈ O(loge n)
お手数ですがよろしくお願いします。
0286デフォルトの名無しさん
2012/07/10(火) 08:24:18.86どうみても言語スレ向けのネタじゃないだろ。
アルゴリズムスレ辺りじゃねぇの。
0287デフォルトの名無しさん
2012/07/10(火) 09:29:06.69iostreamに限定してねぇよ
リソース一般の話だ
0288デフォルトの名無しさん
2012/07/10(火) 10:10:35.41「close()の後に失敗したエラー」って何?
0289デフォルトの名無しさん
2012/07/10(火) 10:17:27.76処理系依存でいろいろ認められるのは戻り値以外の部分。戻り値の型は int じゃないとダメ。
3.6.1 Main function p2
It shall have a return type of type int, but otherwise its type is implementation-defined.
0290デフォルトの名無しさん
2012/07/10(火) 10:30:05.520291デフォルトの名無しさん
2012/07/10(火) 10:47:12.82try
{
std::ofstream file(name);
file.exceptions(std::ios::badbit | std::ios::failbit);
file << x;
file.close();
}
catch (...)
{
...;
}
"..." のところは好きにしろ。
ライブラリ実装が例外を通して提供する情報が要求に対して
不足するようなら個別に try するなり各操作の戻り値見るなりしろ。
0292デフォルトの名無しさん
2012/07/10(火) 11:13:53.15書き込み先のファイルをバックアップして
書き込み成功するまで書き込みを繰り返す
失敗したらユーザーに指示を仰ぐ
といった方法で書いてるんだが巨大なデータを生成しながら書き込む場合にメモリに乗り切らなくて困る
どうしたらいい?
0293デフォルトの名無しさん
2012/07/10(火) 11:20:15.310294デフォルトの名無しさん
2012/07/10(火) 11:23:25.36メモリに蓄えずに書き込めばいいんじゃね
変更が必要ならファイル使うとか
0295デフォルトの名無しさん
2012/07/10(火) 11:26:49.15最初から別名ファイルに書き出していって、最後にリネームすればいいよ。
0296デフォルトの名無しさん
2012/07/10(火) 12:09:00.34何か矛盾してないか
もしそのOSが仮想記憶を使ってるとしたら、スワップファイルもまともに動作しないのか
スワップファイルを安心して置けるドライブに書き込むデータを書いておいて
トランザクション処理しろよ
0297デフォルトの名無しさん
2012/07/10(火) 12:11:01.39分割して書き込んでマージすることにしました
0298デフォルトの名無しさん
2012/07/10(火) 12:35:35.72初心者スレにでも書け
0299デフォルトの名無しさん
2012/07/10(火) 12:43:29.890300デフォルトの名無しさん
2012/07/10(火) 17:53:36.60templateClassInt* p;
template<class T >
class A {
typedef T Type;
};
typedef A<int> templateClassInt;
これ出来ないの?ぐぬぬ
0301デフォルトの名無しさん
2012/07/10(火) 18:02:26.50template<class T > class A;
typedef A<int> templateClassInt;
templateClassInt* p;
template<class T >
class A {
typedef T Type;
};
0302デフォルトの名無しさん
2012/07/10(火) 18:50:06.95こんなことしたい
//a.h
//長いの書くのヤダ、ポインタだから宣言だけでオッケだよね
class VectorInt;
VectorInt* p;
//a.h end
//classInt.h
#include<vector>
extern template class std::vector< int >;
//本当はboost::nklklljkjdljlallkとかで長いし、名前がわかりづらいのでここでtypedefしときたい
typedef std::vector<int> VectorInt;
//classInt.h end
//a.cpp
//#include"a.h"
//#include"classInt.h"
template class VectorInt;//実体化
int main(){
p = new VectorInt();
return 0;
}
//a.cpp end
0303デフォルトの名無しさん
2012/07/10(火) 19:01:17.220304デフォルトの名無しさん
2012/07/10(火) 19:09:17.76もう素直にインクルードするわ
extern templateとか見つけて使ったがよくわからんwww
//a.h
#include"classInt.h"
VectorInt* p;
//a.h end
そういえばここのヘッダーファイルごとにstd::vector<int>とかやったらコンパイルするの1回だけだよね
いやぐぐります
ありがとうございました
0305デフォルトの名無しさん
2012/07/10(火) 21:13:22.92OSバッファでの書き出し失敗。
fcloseやiostreamのcloseはOSバッファまでは感知しないんで、
fclose後に非同期にOSバッファが書き出されるような状況で、
ディスクリプタを閉じてしまうと手も足も出せなくなる。
0306デフォルトの名無しさん
2012/07/10(火) 23:38:50.54AFKA,
SIZE};
int* Select[SIZE]={&TemaNum,&AfkaNum};
ステップ終了後なぜかTemaNumやAfkaNumに83291とか19とか入るんですけどなんでですか?
enum定義前は両方0で初期化されてました。
0307デフォルトの名無しさん
2012/07/10(火) 23:46:57.330308デフォルトの名無しさん
2012/07/10(火) 23:47:35.70全部晴れ
0309デフォルトの名無しさん
2012/07/11(水) 00:20:55.41>269の「flush()してbad()」なら「OSバッファでの書き出し失敗」が
検知できるってこと?
Cの規格 7.21.5.1, 7.21.5.2 を読む限りfflush()の動作にfclose()では
得られない追加の保証があるようには読めないんだけど、
0310デフォルトの名無しさん
2012/07/11(水) 01:00:00.30ブレークポイントを前後に挟んで変数の内容を検証したんですが・・・
0311デフォルトの名無しさん
2012/07/11(水) 01:02:49.000312デフォルトの名無しさん
2012/07/11(水) 03:05:03.28亀レスごめんなさい
了解です
アルゴリズムスレ行ってみます
ありがとうございます
0313デフォルトの名無しさん
2012/07/11(水) 19:54:31.47仕様云々じゃなく現実の問題。
fflushを2回実行したりすると1回目で取れなかった
OS側のエラーが出てくる実装が多い(実装者が意図してるかは知らん)。
closeだけだと1回で終わりだからそこまで検知できない。
0314デフォルトの名無しさん
2012/07/11(水) 22:37:55.75へー。そんな話聞いたことないな。改めて適当に検索しても
見当たらない。
とりあえず GNU libc の実装だとバッファに何も無いときの
fflush()は何もしなさそう。
fflush()の繰り返しで OS からエラーを拾ってきてくれる実装を
どれかひとつ教えてもらえないかね?
0315デフォルトの名無しさん
2012/07/11(水) 22:54:41.34SDカードに限界までデータ書き込むとか
仮想マシン上で容量のすっくないディスク作って書き込んで見たり。
Windowsのランタイムライブラリーとかそうだからやってみ。
gccもVC用のランタイムライブラリー使ってるだけだから
コンパイラーは何使っても構わん。
0316デフォルトの名無しさん
2012/07/11(水) 23:20:32.99unsigned short int AX;
unsigned char Hreg[2];
};
/*この位置だとエラー*/
//unsigned char& AL = Hreg[0];
//unsigned char& AH = Hreg[1];
int main(){
/*この位置なら正常にコンパイル*/
unsigned char& AL = Hreg[0];
unsigned char& AH = Hreg[1];
AX=0xabcd;
cout << hex;
cout << "AX=" << AX << " AH=" << (int)AH << " AL=" << (int)AL << '\n';
AH=0x12;
cout << "AX=" << AX << " AH=" << (int)AH << " AL=" << (int)AL << '\n';
ーーーーーーーーーーーーーーーーーーーーーーー
グローバル領域で参照の変数を定義すると undefined reference to `Hreg'となってエラーになります
どこに問題があるのでしょうか?
0317デフォルトの名無しさん
2012/07/11(水) 23:25:04.24なんだ。またVC++が標準を逸脱してる(してた?)ってだけの話か。
http://support.microsoft.com/kb/66052
「〜実装が多い」といってるけど、他にそんな挙動をする実装あるの?
0318デフォルトの名無しさん
2012/07/11(水) 23:39:03.80標準の要件を超えてなきゃ標準無視とは言わん。
0319デフォルトの名無しさん
2012/07/11(水) 23:47:09.010320デフォルトの名無しさん
2012/07/11(水) 23:50:53.93{
const int a[] = {0,1,2,3,4};
static const int b[] = {0,1,2,3,4};
}
aとbって何が違うんですか
0321デフォルトの名無しさん
2012/07/11(水) 23:58:14.25別に問題なさそう。
http://codepad.org/lerTWOih
0322デフォルトの名無しさん
2012/07/12(木) 00:00:51.32記憶域が違う。前者は自動変数。後者は静的変数。
自動変数だと関数呼出しごとに割り当てと初期化が行われるんで、
配列がとても大きいと時間がかかったり、再帰すると毎回違うアドレスが
得られたりする。
その例のままならたいして違わない。
0323デフォルトの名無しさん
2012/07/12(木) 00:03:19.23OracleやらSunのUNIX向けコンパイラー、BorlandのKylix。
ジャーナリングを確実にしたいためだろうが真意はしらん。
0324デフォルトの名無しさん
2012/07/12(木) 00:05:23.22後者は、戻り値で返すことができる。
前者は、戻り値で返すと異常を起こすので普通コンパイルエラーになる。
0325デフォルトの名無しさん
2012/07/12(木) 00:18:49.76gnu c++コンパイラでは通らないですね
以下グローバル領域中で
>int a; int& ref=a;
>static a; int& ref=a;
は通るけど
static union{int a;};
int& ref = a;
は通らないのは共用体特有のなんちゃらかと考えましたが、
グローバル中の無名共用体の宣言でstaticをつける理由を考えると
参照が外部結合しては困るということなのか
static union{int a;};
static int& ref =a;
で通りました
0326デフォルトの名無しさん
2012/07/12(木) 00:24:23.48その名前なしの共用体に使い道があるのけ
0327デフォルトの名無しさん
2012/07/12(木) 00:35:40.01それそのものは
もともとの使い道のサンプルから、問題となっている箇所を探すためのテストにすぎないですよ?
0328デフォルトの名無しさん
2012/07/12(木) 00:37:12.36codepad は g++ 4.1.2 なわけだが。
エラーが出るバージョンは?
0329デフォルトの名無しさん
2012/07/12(木) 00:38:12.77コンパイルエラーにはならんだろ。
0330デフォルトの名無しさん
2012/07/12(木) 00:42:45.44g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3ですね・・・
コンパイル通らないのは自分の環境が特殊なんですかね
0331デフォルトの名無しさん
2012/07/12(木) 00:45:19.930332デフォルトの名無しさん
2012/07/12(木) 01:10:43.03どうせ実際に問題が起こってるコードと>>316のコードが違ってるんだろ。
0333デフォルトの名無しさん
2012/07/12(木) 01:17:29.61そこまでしてくれとは言えないですが、よかったら実際にコンパイルしてみてください
codepadではエラーを吐かないコードをマルコピして実際にコンパイルしたら問題のエラーが出ます
マニピュレータがstd::付けないと実際のコンパイラで通らないはずですが
codepad上では通ったりしてるので実際のg++の制約を遵守しているようには思えないんですけどね
0334デフォルトの名無しさん
2012/07/12(木) 01:17:58.93共用体の使い方が下手すぎるのがなんとも 316
0335デフォルトの名無しさん
2012/07/12(木) 01:24:37.19コンパイルしてみろというのならコンパイルできるソースを出せよ。
0336デフォルトの名無しさん
2012/07/12(木) 01:29:47.62codepadで通ってあんたの環境で通らないソースがあるんなら、
そのコードのcodepadのURL貼ってみればいいんじゃないの。
0337デフォルトの名無しさん
2012/07/12(木) 01:45:19.040338デフォルトの名無しさん
2012/07/12(木) 01:45:20.40ワケワカで使おうとしてハマりまくってます状態?
0339デフォルトの名無しさん
2012/07/12(木) 01:51:40.20>>325でも構わないですし、include から全部そーす書けというなら
>>316の最後に}つけたものをコンパイルしてみてください
・・・
伝わらないのはこっちの言葉が足りないのかなあ
>>321さんが入力してくれたhttp://codepad.org/lerTWOihでは通るようですが
同じコードを実際にコンパイルしてみると自分の環境では通りません
0340デフォルトの名無しさん
2012/07/12(木) 01:58:36.180341デフォルトの名無しさん
2012/07/12(木) 02:01:05.940342デフォルトの名無しさん
2012/07/12(木) 02:02:07.820343デフォルトの名無しさん
2012/07/12(木) 02:07:54.81いや、>>325を勝手な解釈として自分なりには解決したつもりだったのですが
今はコンパイラに通る通らない論争ですね
>>341-342
わざわざありがとうございました
何がやりたいのかわからないってのはstatic宣言のことですかね?
グローバルでの無名共用体の宣言にはstaticが必要っていうルールがあるんですよ
詳しい理由が探してもなかなかないんですけど
0344デフォルトの名無しさん
2012/07/12(木) 02:08:51.52ideoneではエラーになるよ
エラーが英語だから?
0345デフォルトの名無しさん
2012/07/12(木) 02:12:52.32あ、そうです!
正確に言うと最初から全部リンカエラーですね
0346デフォルトの名無しさん
2012/07/12(木) 02:21:21.48たぶんこれで最小コード。
static union { int i; };
int& r = i;
int main() { return r; }
/tmp/ccIAPctI.o::(.rdata+0x0): undefined reference to `_i'
collect2: ld returned 1 exit status
さぁ bugzilla へ go!
http://gcc.gnu.org/bugzilla/buglist.cgi?quicksearch=anonymous+union
0347デフォルトの名無しさん
2012/07/12(木) 02:21:47.15へー、こういう書き方すると初期化コードが必要になるんだ
0348デフォルトの名無しさん
2012/07/12(木) 02:29:46.510349デフォルトの名無しさん
2012/07/12(木) 02:31:18.12C++流の言い方は知らん
0350デフォルトの名無しさん
2012/07/12(木) 02:32:35.510351デフォルトの名無しさん
2012/07/12(木) 03:07:56.95移植した奴の腕が悪過ぎる。
0352デフォルトの名無しさん
2012/07/12(木) 08:45:57.550353デフォルトの名無しさん
2012/07/12(木) 08:51:15.62っていうかいまどき最適化してくれないコンパイラのほうがめずらしいわ。
0354デフォルトの名無しさん
2012/07/12(木) 09:14:15.64それとも超高速に動作するように最適化するってこと?
どっちにしても「超高速」は無理かと
0355デフォルトの名無しさん
2012/07/12(木) 12:12:03.920356デフォルトの名無しさん
2012/07/12(木) 12:36:40.970357デフォルトの名無しさん
2012/07/12(木) 13:05:54.55変数 型 x &x x *ptr_x = &x *ptr_x
クラス クラス名 cls &cls cls.(メンバ) *ptr_cls = &cls ptr_cls->(メンバ)
配列 型 arr[num] &arr[0] arr[index] ? ?
初心者です。いろいろサイト見て自分なりにまとめたのですが?がサイトによって説明が違くてよくわかりません。
先輩方教えてください
0358デフォルトの名無しさん
2012/07/12(木) 13:48:35.06(*ptr)[num]
ポインタのアクセス
ptr[index]
それとクラスのメンバへのポインタはそれで動いたか?
クラスの場合は必ずインスタンスが必要なので
インスタンス.*メンバへのポインタ
のようになる
もしインスタンスへのポインタから参照するなら
インスタンスへのポインタ->*メンバへのポインタ
となる
あと仮想関数が絡んで来るとかなり動作は複雑になる
0359デフォルトの名無しさん
2012/07/12(木) 13:53:37.91ポインタの説明として「アドレス」を説明するのはいいが
「ポインタ」って表現を「アドレス」って表現しているサイトも糞サイト
0360デフォルトの名無しさん
2012/07/12(木) 14:02:55.57クラスは型
http://ideone.com/GLT9F
※structとclassの違いはデフォルトが「public:」かどうかだけ
配列として宣言した変数は、ポインタ変数のように扱える。
http://ideone.com/jas3H
※配列は入れ物があるけどポインタは無い
?の部分はルールの組み合わせ
http://ideone.com/YvLz6
0361デフォルトの名無しさん
2012/07/12(木) 14:12:16.87「ポインタ変数」は誤解を招く
>※配列は入れ物があるけどポインタは無い
ポインタはある
ポインタ変数とポインタをごちゃ混ぜにするからおかしくなる
0362デフォルトの名無しさん
2012/07/12(木) 14:13:01.97親切にありがとうございます 理解できました!
0363デフォルトの名無しさん
2012/07/12(木) 14:14:01.31みなさんのおっしゃるとおりでした、そこの部分もありがとうございます
0364デフォルトの名無しさん
2012/07/12(木) 14:24:08.07より分かりやすく誤解を招かない表現を持ってるなら
俺に言わんでそれを初心者に説明してあげなよ
0365デフォルトの名無しさん
2012/07/12(木) 14:39:34.39間違いじゃん
配列にはポインタは無い
間違いじゃん
「分かりやすく」云々以前に間違ったことを教えるなっつーの
0366デフォルトの名無しさん
2012/07/12(木) 14:50:10.890367デフォルトの名無しさん
2012/07/12(木) 14:59:55.30ならそれを訂正しつつ君が説明すればいいじゃんって話なんだけど伝わってる?
別に厳密な言語仕様の話をしてわけじゃないし
0368デフォルトの名無しさん
2012/07/12(木) 15:06:21.54a[1] は 配列名a に[]演算子を使っているだけ
a[1] は *(a+1) に展開されたのと一緒
だから 1[a] は *(1+a) に展開されたのと一緒
よって以下は全部一緒
a[1]
1[a]
*(a+1)
*(1+a)
配列名はポインタでありポインタ変数ではないため
配列名に代入する a = &b のような記述は出来ない
これで満足か?
0369デフォルトの名無しさん
2012/07/12(木) 15:09:04.15でも「ポインタ」を「ポインタ変数」として説明するから
初心者が理解出来ずに配列とポインタで挫折するんだよ
このあたりは説明する側が気を付けないと駄目って話
0370デフォルトの名無しさん
2012/07/12(木) 15:11:29.500371デフォルトの名無しさん
2012/07/12(木) 15:22:23.81変数については分かった
入れ物云々については?
int a[1];
*a = 0;
は大丈夫だけど
int* a;
*a = 0;
は駄目ということを言いたかったんだけど
>>360の最後のソースの補足として
0372デフォルトの名無しさん
2012/07/12(木) 15:37:09.85あらかじめOSに「自分はこのくらいメモリを使うつもりなので覚悟してくれ」
というヒントを与える方法があるなら教えてくれ。
boostかSTLにあるAPIで。
0373デフォルトの名無しさん
2012/07/12(木) 15:37:42.13すまん
言ってる意味が分かった
「配列は入れ物があるけどポインタは無い 」
自分は
「配列は入れ物がある」
「しかし配列にポインタは無い」
と言ったのかと思ってた
0374デフォルトの名無しさん
2012/07/12(木) 16:04:04.49無いので、先にアローケートして自前でプールするしか無いと思うんだが・・・。
書き方しだいではmallocよりもはやくなるよ。
0375デフォルトの名無しさん
2012/07/12(木) 16:12:59.49http://ideone.com/md53X
0376デフォルトの名無しさん
2012/07/12(木) 17:03:13.02ならそういうライブラリでもいい
boostにならあるかな
0377デフォルトの名無しさん
2012/07/12(木) 17:26:22.07詳しくはしらないが、ここらへんじゃないかなぁ・・・。
ttp://www.kmonos.net/alang/boost/classes/pool.html
ttp://www.boost.org/doc/libs/1_50_0/libs/pool/doc/html/index.html
0378デフォルトの名無しさん
2012/07/12(木) 22:26:40.95配列って実際はアドレス定数だよな。
スタックポインタによって変わるから厳密な定数じゃないけど。
0379デフォルトの名無しさん
2012/07/13(金) 00:12:34.040380デフォルトの名無しさん
2012/07/13(金) 05:35:14.97更に言えば、グローバルで宣言した配列の場合は、static領域をさした
定数そのものだから。
0381デフォルトの名無しさん
2012/07/13(金) 06:09:17.33・OOやテンプレートの様に演繹的に理解する事で、新たに理解する知識量を減らせるから
(他の機能と共通する特性を新たに覚える必要がなく、固有特性だけ考えればいい)
・教えるとき説明しやすいから
定数というか、constなポインターの方がもっと近いじゃなかろうか
sizeofで長さが取れなかったり、勝手にどこかの領域で初期化されるぐらいの違いでしょ
0382デフォルトの名無しさん
2012/07/13(金) 07:44:16.82>>378みたいな事は言えねえなあ
int(*)[10]
0383デフォルトの名無しさん
2012/07/13(金) 13:24:20.670384デフォルトの名無しさん
2012/07/13(金) 13:32:17.220385デフォルトの名無しさん
2012/07/13(金) 13:36:28.220386デフォルトの名無しさん
2012/07/13(金) 13:48:29.88天才
0387デフォルトの名無しさん
2012/07/13(金) 13:51:07.20ありがとうございました
0388デフォルトの名無しさん
2012/07/13(金) 14:29:35.36実験してみよう
0389デフォルトの名無しさん
2012/07/13(金) 15:21:10.89http://codepad.org/wgHPR5Vo
どういう場合に問題になるのか分からない
return *this; でコピーコンストラクタが呼び出されていると思うんだけど
0390デフォルトの名無しさん
2012/07/13(金) 16:15:57.990391デフォルトの名無しさん
2012/07/13(金) 16:41:43.52今はわざわざclone()って関数を作って返してるんだし、だいたいコピーコンストラクタは
継承されないからね
0392デフォルトの名無しさん
2012/07/13(金) 16:56:13.09いつか痛い目みてその時に気付くから
0393デフォルトの名無しさん
2012/07/13(金) 17:13:45.24http://ray.sakura.ne.jp/tips/copy.html
腐ってんな
0394デフォルトの名無しさん
2012/07/13(金) 17:21:46.54共変にならないので困るなこれ
うっかりdeleteし忘れてメモリリークの原因になる
0395デフォルトの名無しさん
2012/07/13(金) 19:49:37.450396デフォルトの名無しさん
2012/07/13(金) 19:59:39.360397デフォルトの名無しさん
2012/07/13(金) 20:12:08.30いや継承してるとclone()をvirtualにするでしょ?
スマポは型を固定してしまうのでコンパイル通らないのよ
0398デフォルトの名無しさん
2012/07/13(金) 20:56:18.83shared_ptr<Derived>とか欲しければ仮想でないshared_ptr<Derived> clone_derived()を派生側で定義しとけばいい
0399デフォルトの名無しさん
2012/07/13(金) 20:59:05.66それで書いてみるわ
0400デフォルトの名無しさん
2012/07/13(金) 21:08:58.95よしこれでメモリリーク無しに出来た
0401デフォルトの名無しさん
2012/07/13(金) 21:27:38.98ttp://ideone.com/6AMjL
0402デフォルトの名無しさん
2012/07/13(金) 21:36:44.74パフォーマンスの為に生使いたい人が困るだろうが
0403デフォルトの名無しさん
2012/07/13(金) 21:43:57.94ありがとう
参考にさせていただきます
>>402
いや、メモリリークしないように自分で気をつけるのなら共変のポインタをvirtualで返せばいいよ
0404デフォルトの名無しさん
2012/07/13(金) 21:56:29.97小規模ならまだしも。
0405デフォルトの名無しさん
2012/07/13(金) 22:16:43.47スマポ前提の設計だと後続のコードもスマポに合わせて設計しないといけなくなる
最近は標準化されたから少し抵抗減ったが
少し前にスマポと言ったらブーストなどのライブラリが必要だった
これは使う側からすると面倒だ
ナマポなら利用者がわからスマポの使用不使用や種類を選択しやすい
0406デフォルトの名無しさん
2012/07/13(金) 22:18:43.240407デフォルトの名無しさん
2012/07/13(金) 22:20:15.560408デフォルトの名無しさん
2012/07/13(金) 22:46:38.14ttp://codepad.org/NKX0xGnQ
clone()の戻り値をスマポにしても良いかも
DerivedのコピーコンストラクタにClonable<Derived>()が無いと明示的な初期化が無いという警告が出たんだけど何でなんだろうか
0409デフォルトの名無しさん
2012/07/14(土) 00:11:50.02生ポインタに比べて例えば std::auto_ptr のパフォーマンスがどう劣ると思ってるの?
0410デフォルトの名無しさん
2012/07/14(土) 00:12:30.18つまり標準化されたからガンガン使えってことだね
0411デフォルトの名無しさん
2012/07/14(土) 00:31:05.16class hoge { smapo<x> p; void method() { p->method(); }
hoge(): p(new x) {}
hoge(hoge const &o): p(o.p->clone()){}
};
hoge *p = new hoge;
0412デフォルトの名無しさん
2012/07/14(土) 02:42:54.70unique_ptrが入ったからか
0413デフォルトの名無しさん
2012/07/14(土) 03:32:50.110414デフォルトの名無しさん
2012/07/14(土) 09:00:33.89ioctl アイオークトゥル
fcntl エフクントゥル
ctrl クタール
0415デフォルトの名無しさん
2012/07/14(土) 09:10:51.63calcXXX 軽くXXX
0416デフォルトの名無しさん
2012/07/14(土) 09:37:55.88auto_ptr を deprecated にするために
unique_ptr その他を入れたってとこだな
>>413
コピーではなくムーブづら
0417デフォルトの名無しさん
2012/07/14(土) 10:58:22.42効率悪すぎだな
最初から生ポインタを返せばいい
0418デフォルトの名無しさん
2012/07/14(土) 11:08:03.780419デフォルトの名無しさん
2012/07/14(土) 12:00:49.75まだstd::shared_ptrが入ってないコンパイラもあるからだ(どこのコンパイラとは言わないが)
要するにソースの再利用の話だよな?
boostの使用は禁止されていてstdなら良いって会社もあるから
どうするんだろうね?エディタかsedか他のスプリクト言語でまとめて置換か?
0420デフォルトの名無しさん
2012/07/14(土) 12:16:36.920421デフォルトの名無しさん
2012/07/14(土) 12:26:50.76std::shared_ptr用のコンストラクター作るから使う側は問題ないだろ
問題はboostがどうやってそれを実装するかだ
0422デフォルトの名無しさん
2012/07/14(土) 12:40:09.38bstsp<y> p(new y);
stdsp<x> q(p.get(), [p](y*){});
0423デフォルトの名無しさん
2012/07/14(土) 12:57:20.180424デフォルトの名無しさん
2012/07/14(土) 13:02:23.040425デフォルトの名無しさん
2012/07/14(土) 13:06:48.10ありがとうございます すごい早くなりましたw
0426デフォルトの名無しさん
2012/07/14(土) 13:07:57.280427デフォルトの名無しさん
2012/07/14(土) 13:09:25.240428デフォルトの名無しさん
2012/07/14(土) 13:14:36.71マジでありがたいw
0429デフォルトの名無しさん
2012/07/15(日) 20:53:18.25class foo{
vec x,y;
public:
foo( const vec &a, const vec &b ):x(a),y(b){}
foo( const vec &a, vec &&b ): x(a),y(move(b)){}
foo( vec &&a, const vec &b ): x(move(a)),y(b){}
foo( vec &&a, vec &&b ): x(move(a)),y(move(b)){}
};
4つも書くのメンドイんですが、どうにかなりませんか?
0430デフォルトの名無しさん
2012/07/15(日) 21:24:18.25んで、右辺値参照なかったら普通のコピコン動くんじゃなかったっけ?
C++11はよく知らないんだけど。
0431デフォルトの名無しさん
2012/07/15(日) 21:54:51.52テンプレートと完全転送使え
ttp://ideone.com/rsNRE
0432デフォルトの名無しさん
2012/07/15(日) 22:10:16.260433デフォルトの名無しさん
2012/07/15(日) 23:00:57.63それだと受け付けてほしくないもの受理しちゃう。
ttp://ideone.com/wybTH
0434デフォルトの名無しさん
2012/07/15(日) 23:09:23.030435デフォルトの名無しさん
2012/07/15(日) 23:11:02.330436デフォルトの名無しさん
2012/07/15(日) 23:12:53.81bar,int
int,intの三つ?
"4つも書くのメンドイ"の解決にならんじゃん…
0437デフォルトの名無しさん
2012/07/15(日) 23:34:15.84元の>>429でもvecに暗黙変換可能な型は受け入れてるからいいんじゃないの
ttp://ideone.com/i3Gzi
厳密に型制限したいならenable_if使って黒魔術
ttp://ideone.com/sbbUO
0438デフォルトの名無しさん
2012/07/15(日) 23:56:57.09vectorって誰かがoperator vec作るアンポンタンなことせん限り暗黙変換可能な型ないはずだが。
でも、enable_ifはいいアイデアだと思う。static_assert使うよりまともなエラーになるな。
0439デフォルトの名無しさん
2012/07/16(月) 00:17:11.23decayは要るのか?
0440デフォルトの名無しさん
2012/07/16(月) 01:37:32.72いるんじゃない ttp://ideone.com/jCjUw
0441デフォルトの名無しさん
2012/07/16(月) 01:55:53.78いまだにこんな書き込みがあるとは恐ろしいな。
組込で作ってるならC++自体使うなって話だがw
0442デフォルトの名無しさん
2012/07/16(月) 08:13:44.26なんの制限も無しだと本来は明示的変換が必要な型も暗黙に受け入れてしまう
ttp://ideone.com/eQVC6
暗黙変換が可能な型だけを受け入れるならis_convertibleでenable_if
ttp://ideone.com/X9TS8
0443デフォルトの名無しさん
2012/07/16(月) 08:43:09.33反論は論理的な文章で書きなよど素人さんwww
つうかパフォーマンス=組み込みってwww
0444デフォルトの名無しさん
2012/07/16(月) 08:47:04.770445デフォルトの名無しさん
2012/07/16(月) 08:49:10.770446デフォルトの名無しさん
2012/07/16(月) 10:11:00.29HSPに比べればはるかに大規模コードがバグりにくくなるし、良いんでないの
C++固有の難解なトコに触るレベルまでいかないなら難しくはない
0447デフォルトの名無しさん
2012/07/16(月) 13:27:39.720448デフォルトの名無しさん
2012/07/16(月) 13:32:55.310449デフォルトの名無しさん
2012/07/16(月) 13:46:30.21コード蓄積有無で実行/書上げ効率が別次元になるからねー
0450デフォルトの名無しさん
2012/07/16(月) 13:50:51.180451デフォルトの名無しさん
2012/07/16(月) 13:58:50.350452デフォルトの名無しさん
2012/07/16(月) 14:07:32.95生産性でJavaに追いつかれないように必死なのさ
0453デフォルトの名無しさん
2012/07/16(月) 14:20:29.25Javaは実行してみると分かるけど突然JITコンパイラやGCが働いてCPUの
負荷が跳ね上がる
マルチコアCPUなら問題ないが、組み込みとかでシングルコアだと致命的
0454デフォルトの名無しさん
2012/07/16(月) 14:51:08.900455デフォルトの名無しさん
2012/07/16(月) 15:07:34.67って利点が分からないのか
C++11になってムーブコンストラクタが新設されてからさらにその性能がアップしている
0456デフォルトの名無しさん
2012/07/16(月) 15:09:05.40バカ乙
一目見てなにやってるかわからんコードなんてクズ
初回に書くときだけ楽でも後でいじる奴の仕事が二十倍遅くなるわ
0457デフォルトの名無しさん
2012/07/16(月) 15:15:41.14これだから土方クズプログラマは…
0458デフォルトの名無しさん
2012/07/16(月) 15:17:41.31こういうバカが多いから未だにCがトップシェアなんだな・・
0459デフォルトの名無しさん
2012/07/16(月) 15:18:48.81カスだな〜おまえ
一目みてわかってるのはそのコード最初に書いたクズだけだよ
オペレータオーバーロードする奴はアスペルガーみたいなもんだわ
0460デフォルトの名無しさん
2012/07/16(月) 15:21:07.62はい
このコードがなにをしてるか当てて下さい
わかるわけねーだろ!!
あーあ、ヘッダかドキュメント見に行かなきゃ〜
時間無駄したな〜
クズがオペレータオーバーロードなんかするからさ〜まじ氏ねよ
0461デフォルトの名無しさん
2012/07/16(月) 15:25:55.68お前仕様書書いた事ないのか?
サンデープログラマーなのか
0462デフォルトの名無しさん
2012/07/16(月) 15:28:45.100463デフォルトの名無しさん
2012/07/16(月) 15:30:00.42お前の上司はそんなこと聞いてくるのか
かわいそうに同情するよ
0464デフォルトの名無しさん
2012/07/16(月) 15:35:22.86違います
あーあ致命的なバグ出しちゃうよおまえ同寸の
0465デフォルトの名無しさん
2012/07/16(月) 15:42:03.14それかC言語しか出来なくてC++が理解出来ない己の頭の悪さを
このような形で解消しようとしていると見る事もできる
0466デフォルトの名無しさん
2012/07/16(月) 15:50:03.29> 違います
では、正解書いてみ。
0467デフォルトの名無しさん
2012/07/16(月) 15:52:36.27コードに依存します
ドキュメントかヘッダを毎回参照して確認し時間を無駄にして下さい
0468デフォルトの名無しさん
2012/07/16(月) 15:53:43.050469デフォルトの名無しさん
2012/07/16(月) 16:00:02.53馬鹿発見
コメント書いてたらご自慢のタイプ量が少ないメリットが帳消しだろwww
本末転倒ってこの事だな
やはり例外なんていう見えないgotoをありがたがってるバカなだけあるわwww
0470デフォルトの名無しさん
2012/07/16(月) 16:14:18.240471デフォルトの名無しさん
2012/07/16(月) 16:15:50.39アマチュアかよ。
0472デフォルトの名無しさん
2012/07/16(月) 16:18:36.73>コードに依存します
すくなくとも、俺のところではそんな馬鹿な仕様のクラスは使わない。
>ドキュメントかヘッダを毎回参照して確認し時間を無駄にして下さい
君のところだけだよ、そんな馬鹿なことしてるのは。
0473デフォルトの名無しさん
2012/07/16(月) 16:19:20.47プロほどコードを信頼する
0474デフォルトの名無しさん
2012/07/16(月) 16:20:15.14そんなクラスは使わないんだな?
要するにオペレータオーバーロードしたクラスは使わないという事だな
なんだ意見一致したジャないか
0475デフォルトの名無しさん
2012/07/16(月) 16:32:52.36>そんなクラスは使わないんだな?
そんな「馬鹿」なクラスは使わない。
アホと意見が一致することはないだろう。(w
0476デフォルトの名無しさん
2012/07/16(月) 16:33:42.39プロ気取り乙
0477デフォルトの名無しさん
2012/07/16(月) 16:39:23.79いつもの事だな
0478デフォルトの名無しさん
2012/07/16(月) 16:58:31.60みたいなの強要するのもありかな
0479デフォルトの名無しさん
2012/07/16(月) 17:44:39.83i = func(j);
これだって同じくらいなにしてるかわからないだろ。
0480デフォルトの名無しさん
2012/07/16(月) 17:46:10.31必ず演算子オーバーロードされてるのだから
何も悩む必要は無い
0481デフォルトの名無しさん
2012/07/16(月) 18:57:50.02適切な名前をつければいい
0482デフォルトの名無しさん
2012/07/16(月) 19:00:54.78a += ( b );
名前つけようが、templateでの可搬性が下がるだけでメリット無し。
0483デフォルトの名無しさん
2012/07/16(月) 19:01:11.350484デフォルトの名無しさん
2012/07/16(月) 19:01:37.93iの型も分からないくらい長い関数作ってんだからお察しだろ
0485デフォルトの名無しさん
2012/07/16(月) 19:05:04.14cppは例外を採用し見えないジャンプコードに汚染されたクソ言語ってな
0486デフォルトの名無しさん
2012/07/16(月) 19:10:53.470487デフォルトの名無しさん
2012/07/16(月) 19:11:49.52わからなくても動くようにしないといけないだろ。
こういうテンプレートでの可搬性が下がる。
template< class Iterator, class Type > Type Sum( Iterator begin, Iterator end, const Type &initial )
{
Type sum = initial;
while( begin != end )
{
sum += *begin;
++begin:
}
return sum;
}
0488デフォルトの名無しさん
2012/07/16(月) 19:21:59.02>template< class Iterator, class Type > Type Sum( Iterator begin, Iterator end, const Type &initial )
>{
> Type sum = initial;
> while( NotEQ(begin,end ))
> {
> sum = Add(sum, Unref( begin);
> Next(begin);
> }
> return sum;
>}
こちらのがはるかに理解しやすい
0489デフォルトの名無しさん
2012/07/16(月) 19:27:34.310490デフォルトの名無しさん
2012/07/16(月) 19:28:34.43COBOLかよ
0491デフォルトの名無しさん
2012/07/16(月) 19:31:17.47なんのためのオーバーロードだよwww
プリミティブにも同じく定義すりゃいいだろ
クラスを本来クラスの機能と直接関係ない演算子と関連付けるほうがキモイわ
0492デフォルトの名無しさん
2012/07/16(月) 19:32:44.97余計にたちが悪いわ
0493デフォルトの名無しさん
2012/07/16(月) 19:37:40.89なんだオーバーロードのルックアップのルールも知らない素人か
0494デフォルトの名無しさん
2012/07/16(月) 19:39:21.94NotEQってなんだ?特にEQって
Nextって次の値返すんじゃないのか?
テンプレート書くときも、オーバーロードした関数
単体で使うときも何に使うもんかさっぱり判らんぞ。
0495デフォルトの名無しさん
2012/07/16(月) 19:54:45.37流石にそれはアスペだろ
鉛筆みてこれはなんだ箸か?とわかってるのにわめいてるようにしか見えないよ
0496デフォルトの名無しさん
2012/07/16(月) 19:59:17.25お前のルールで仕切ってる職場ならしらんが、
整数型に演算子と同じ動きをする関数が定義されてるなんて
普通思わないから。別の何かをしてるもんだと思う
0497デフォルトの名無しさん
2012/07/16(月) 20:00:01.570498デフォルトの名無しさん
2012/07/16(月) 20:00:51.95無いとは思うがそんな自慰行為職場で済んなよ。
0499デフォルトの名無しさん
2012/07/16(月) 20:01:41.250500デフォルトの名無しさん
2012/07/16(月) 20:02:32.100501デフォルトの名無しさん
2012/07/16(月) 20:03:04.94オペレーターちゃん必死ですねw
0502デフォルトの名無しさん
2012/07/16(月) 20:16:49.55基本的にそれ以外のオペレータオーバーロードは一部の例外を除いて非推奨だぜ
0503デフォルトの名無しさん
2012/07/16(月) 20:22:53.40だれが?
0504デフォルトの名無しさん
2012/07/16(月) 20:24:54.660505デフォルトの名無しさん
2012/07/16(月) 20:31:17.05OOPLじゃ他にも.Net系言語、PythonやRubyでもできる。基本C++の他の設計とは関係ない。
オペレーターをオーバーライドして整数型に対する関数を再利用するために用意されてる。
0506デフォルトの名無しさん
2012/07/16(月) 20:33:26.19お前の常識はどうでもいいから、非推奨してる規格委員の資料を出せ。
0507デフォルトの名無しさん
2012/07/16(月) 21:10:01.980508デフォルトの名無しさん
2012/07/16(月) 21:12:02.95たまにあるね
何気ない書き込みが思惑を超えて勝手に炎上して
それを見て学ぶ
0509デフォルトの名無しさん
2012/07/16(月) 21:14:11.35いやいや、わざわざ知ったかしたり、上みたいにキチガイな主張をして、それを正論で叩き潰そうとする人の正論を見て勉強をするっていうやつ
これが真性か炎上勉強法なのかは知らんがw
0510デフォルトの名無しさん
2012/07/16(月) 21:18:18.63ああ、それか
それもたまにやるけど、ツボを突くのが難しいから
成功率低いんだよな・・・
0511デフォルトの名無しさん
2012/07/16(月) 21:35:47.55お前が例外安全なプログラムが組めないヘボプログラマってだけだろ・・・
0512デフォルトの名無しさん
2012/07/16(月) 21:43:00.350513デフォルトの名無しさん
2012/07/16(月) 21:55:44.09ばれたかwww
かなりスルーされにくいから重宝するんだよなこれ
0514デフォルトの名無しさん
2012/07/16(月) 21:57:10.63見えないジャンプコードが入っていてなんの問題があるんだ?
breakでも見えないジャンプコードは入るだろうしreturnだって入るだろ。
そもそも、Cでまともに例外処理してたなら、try-catchで例外処理したって
困ることないだろ。Cで戻り値やerrnoの例外情報もみ消すことが当たり前の
頭になってるから発狂するはめになんだろ。
0515デフォルトの名無しさん
2012/07/16(月) 22:01:18.750516デフォルトの名無しさん
2012/07/16(月) 22:01:20.21死ねよ
0517デフォルトの名無しさん
2012/07/16(月) 22:01:52.65意図して捕まえるケースなんてそうないよ
大体はRAIIで済む
0518デフォルトの名無しさん
2012/07/16(月) 22:05:19.01QZがやっているやつか。恥しらずにしかできないだろうね。
0519デフォルトの名無しさん
2012/07/16(月) 22:05:43.45デバッグモードとリリースモードのどちらでコンパイルされたかを
判断するコードを教えてください
0520デフォルトの名無しさん
2012/07/16(月) 22:08:21.19エラー処理せずに進んじゃ困るから例外扱いにするんだから、
いずれにせよ結果的は異常終了で変わらないだろうにね。
try-catchと違い戻り値無視に関しては最悪データを飛ばすけど。
0521デフォルトの名無しさん
2012/07/16(月) 22:16:29.60ExampleRead( &id, "key" ); //戻り値チェック無視
ExampleDelete( id );
0 == idが有効なリソースを指していた場合、当然意図しない情報領域が飛ぶ。
効率を考えて、0初期化しなかった場合、より不特定な情報領域が飛ぶ。
同時にクビも飛ぶ。
0522デフォルトの名無しさん
2012/07/16(月) 22:23:15.280523デフォルトの名無しさん
2012/07/16(月) 22:28:55.410524デフォルトの名無しさん
2012/07/16(月) 22:28:57.24コードは知らんが、リンクされてるライブラリを調べれば分かる
0525デフォルトの名無しさん
2012/07/16(月) 22:51:16.33例外が関係するかは知らんが蓄積情報喪失ってのはとんでもないことになるかならな。
abortとどっちが深刻かは言うまでもない。
0526デフォルトの名無しさん
2012/07/16(月) 22:55:21.210527デフォルトの名無しさん
2012/07/16(月) 23:01:04.09ラップしてnothrowにしないとCとかで使えないし
0528デフォルトの名無しさん
2012/07/16(月) 23:46:40.95戻り値でもモジュールまたげば翻訳することになるから同じこと。
0529デフォルトの名無しさん
2012/07/16(月) 23:47:43.71pythonもrubyも「例外を採用し見えないジャンプコードに汚染されたクソ言語」だと思ってるの?
0530デフォルトの名無しさん
2012/07/16(月) 23:54:21.250531デフォルトの名無しさん
2012/07/17(火) 01:07:11.100532デフォルトの名無しさん
2012/07/17(火) 05:10:21.12>>485 みたいに、ヘタに理由書くとフルボッコだし。(w
0533デフォルトの名無しさん
2012/07/17(火) 05:21:24.06エラー忘却型コンピューティングか。
http://people.csail.mit.edu/rinard/paper/osdi04.pdf
意味が分かってない日本のお偉いさんは、例外処理せずログだけ残すことだと思ってんだろうが、
この方式は、例外の代わりに問題の起きない値を返す方式で、例外事象が起きたら例外の起きた
関数の中でちゃんと問題のない値を返せるよう処理しなきゃならん。
Cでも例外処理さぼってるような奴が使えるシロモノでもない。
0534デフォルトの名無しさん
2012/07/17(火) 07:39:09.200535デフォルトの名無しさん
2012/07/17(火) 10:18:10.27class E
{
S s[size(X...)];
constexpr int size(int x)
{
return x;
}
template<typename ... P>
constexpr int size(int x, Y ... y)
{
return x+size(y ...);
}
};
配列sがつくれません。
どうしたら直せますか?
0536デフォルトの名無しさん
2012/07/17(火) 10:18:51.450537デフォルトの名無しさん
2012/07/17(火) 11:39:07.08template<typename S, int ... X>
class E
{
S s[size(X...)];
constexpr int size(int x)
{
return x;
}
template<typename ... Y>
constexpr int size(int x, Y ... y)
{
return x+size(y ...);
}
};
ソースコードを日本語で翻訳すると可変長のテンプレート引数の
総和の長さを持つ配列を作りたいけれど。
定数になる関数を使ってもコンパイルできませんということです。
ちなみに配列を初期化する前には関数はないのかもとおもって静的関数にしてみてもできませんでした。
0538デフォルトの名無しさん
2012/07/17(火) 12:23:05.11sizeの宣言と定義2つをEの定義の外に出す。メンバ関数を作りたいわけじゃないだろう
0539デフォルトの名無しさん
2012/07/17(火) 12:50:30.53それもやったけど出来ませんでした。
0540デフォルトの名無しさん
2012/07/17(火) 12:58:49.25gcc4.7ではできる。ideoneの0x gcc4.5.1ではエラー
constexpr int size(int x)
{
return x;
}
template<typename ... Y>
constexpr int size(int x, Y ... y)
{
return x + size(y ...);
}
template<typename S, int ... X>
class E
{
S s[size(X...)];
};
int main() {
E<int, 1, 2, 3> e;
}
0541デフォルトの名無しさん
2012/07/17(火) 13:02:09.88GCC4.7じゃないので出来ませんでした。
GCC4.7に変えたいです。
0542デフォルトの名無しさん
2012/07/17(火) 20:44:08.25PDF読んでみりゃ解るが、これって単なる例外じゃなく
バッファーオーバーランとかセキュリティ的に極めて致命的な
場合に限った話で、他の例外は今までどおり例外処理が必要なんだよな。
そもそも、エラー忘却型って訳語自体がおかしいし。
0543デフォルトの名無しさん
2012/07/17(火) 21:48:07.200544デフォルトの名無しさん
2012/07/17(火) 22:36:21.21http://ideone.com/h7kQf
このコードはideone(gcc-4.5.1)だとコンパイルが通りませんがgcc-4.6.0と4.7.0だと通ります
またエラーの出ている行をreturn this->f_(g(arg));のように変えると
コンパイルは通りますが今度は例外を出して落ちます
質問の一つ目はコンパイルエラーの理由で二つ目はランタイムエラーの原因と対処です
お願いします
0545デフォルトの名無しさん
2012/07/17(火) 22:51:31.830546デフォルトの名無しさん
2012/07/18(水) 00:32:01.140547デフォルトの名無しさん
2012/07/18(水) 01:01:20.22スマートポインタの有用性はもはやググレばいくらでも見つかる・・・と思ったら
ぜんぜんないでやんの。
そりゃ生ポインタ返せって言うヤツがまだいるわけだな。
0548デフォルトの名無しさん
2012/07/18(水) 01:11:40.760549デフォルトの名無しさん
2012/07/18(水) 02:31:49.33obj *obj::clone(); // クラス製作者が書くべきコード
//利用者が書くべきコード
spobj create(...) { return spobj(new obj(...)); }
spobj clone(spobj p) { return spobj(p->clone()); }
当然テンプレートを使って楽していいぞ
0550デフォルトの名無しさん
2012/07/18(水) 02:38:13.12普通に考えて「スマポを生成する」なんて機能は論理的に考えて元々のクラスに不必要な機能なんだよ
だから当然スマポを生成する機能は分離するのが正しい設計だ
0551デフォルトの名無しさん
2012/07/18(水) 05:59:32.63オーバーライドが不便すぎる
所有権の無くなるスマポを返したい時、手の込んだ事せにゃならん
逆も言えた話ではあるがいくぶんかマシだわ
0552デフォルトの名無しさん
2012/07/18(水) 07:22:23.000553デフォルトの名無しさん
2012/07/18(水) 08:34:30.18使う側の入れ物は好きに選べるんだぜ。最強じゃね?
0554デフォルトの名無しさん
2012/07/18(水) 09:24:51.170555デフォルトの名無しさん
2012/07/18(水) 09:35:48.47何が言いたいのかよくわからない
0556デフォルトの名無しさん
2012/07/18(水) 09:54:21.18301 :デフォルトの名無しさん [sage] :2012/05/25(金) 16:45:50.43
スマポが使えるなら使ったら方がいいが、
パフォーマンスやメモリの観点で使わない方がいい場合もあるからケースバイケースだな。
302 :デフォルトの名無しさん [sage] :2012/05/25(金) 17:04:43.03
shared_ptrはともかくunique_ptrは消費メモリもオーバーヘッドも生ポインタと変わらんと思う
303 :デフォルトの名無しさん [sage] :2012/05/25(金) 17:23:15.50
生成と破棄x30000000、sizeof比較
int*: time: 2.13s
http://ideone.com/2tLcx
std::unique_ptr<int>: time: 2.13s
http://ideone.com/wtba4
std::shared_ptr<int>: time: 4.41s
http://ideone.com/UDuJE
sizeof:
http://ideone.com/EtftU
> sizeof(int*) = 4
> sizeof(std::unique_ptr<int>) = 4
> sizeof(std::shared_ptr<int>) = 8
304 :デフォルトの名無しさん [sage] :2012/05/25(金) 17:24:20.59
亡きauto_ptrさん
http://ideone.com/sc7fr
0557デフォルトの名無しさん
2012/07/18(水) 10:02:50.79テンプレートで指定だからムーブする時に型を合わせないとダメだし
動的にしたるかと思ってfunction使うと例外安全じゃ無くなるし
0558デフォルトの名無しさん
2012/07/18(水) 10:19:54.900559デフォルトの名無しさん
2012/07/18(水) 12:20:04.53処理時間≒メモリアクセス時間という俺の持論通りだ。
0560デフォルトの名無しさん
2012/07/18(水) 12:55:49.820561デフォルトの名無しさん
2012/07/18(水) 17:52:43.760562デフォルトの名無しさん
2012/07/18(水) 18:11:06.860563デフォルトの名無しさん
2012/07/18(水) 18:23:11.91a)入り口に男湯と書いてあるところに入る
b)入り口に女湯と書いてあるところに入る
あら不思議
どっちも同じ風呂釜に
0564デフォルトの名無しさん
2012/07/18(水) 18:25:44.271の湯、2の湯と分かれている
男湯側から見ると3の湯がひとつしかない
0565デフォルトの名無しさん
2012/07/18(水) 18:49:11.17男湯.3の湯
女湯.2の湯
女湯.1の湯
というパターンがあることになる
0566デフォルトの名無しさん
2012/07/18(水) 18:52:25.800567デフォルトの名無しさん
2012/07/18(水) 18:53:04.27君は歯ブラシを歯磨きに使う
お母さんはその歯ブラシをちょっとした掃除に使う
0568デフォルトの名無しさん
2012/07/18(水) 18:55:00.950569デフォルトの名無しさん
2012/07/18(水) 18:56:38.880570デフォルトの名無しさん
2012/07/18(水) 21:51:32.04どれですか?
>>546
だからランタイムエラーが出てしまうんですね
ではgccのバージョンが違うとうまく動くのはなぜなんでしょうか
0571デフォルトの名無しさん
2012/07/19(木) 01:20:34.25> ではgccのバージョンが違うとうまく動くのはなぜなんでしょうか
>> return { [this, g](Arg arg) { return f_(g(arg)); } };
thisをキャプチャしていて (*this).f_ が可視なら f_ が暗黙的にキャプチャされるのが正しい処理
そこに不具合があったからコンパイルエラー
0572片山博文MZボット ◆0lBZNi.Q7evd
2012/07/19(木) 01:26:46.380573デフォルトの名無しさん
2012/07/19(木) 05:44:02.99全然違ってくるけど、下位バイトってなんの事言ってんだ?
0574片山博文MZボット ◆0lBZNi.Q7evd
2012/07/19(木) 06:28:20.24LEの場合は、共通の下位ブロックを共用する。
BEの場合は、共通の上位ブロックを共用する。
0575デフォルトの名無しさん
2012/07/19(木) 06:34:13.09リトルエンディアン系なのかで、実行環境関係
なかったりするんだけどな。
0576デフォルトの名無しさん
2012/07/19(木) 07:27:39.74下位バイト=パンツ
家族でパンツを共有することを思い浮かべてごらん
0577デフォルトの名無しさん
2012/07/19(木) 07:38:14.95void func(const double (&arr)[n]);
にdouble*を渡す方法ありますか?(キャストなどで)
具体的には
array<double,10> xs;
に対してfunc(hoge_cast<・・・>(xs.data()))みたいなことを考えています。
(静的な配列なのにAPI的に配列の参照が取り出せないので困っています)
0578デフォルトの名無しさん
2012/07/19(木) 08:32:26.540579デフォルトの名無しさん
2012/07/19(木) 09:21:46.650580デフォルトの名無しさん
2012/07/19(木) 09:23:56.36func((double const(&)[10])xs.data());
0581デフォルトの名無しさん
2012/07/19(木) 20:02:35.92{ set( s ); return *this; }
Hoge& operator=(const string& s)
{ set( s ); return *this; }
Hoge& operator=(int s)
{ set( s ); return *this; }
みたいなのを延々と書きたくないんだけど、どうしたらいいの?
0582デフォルトの名無しさん
2012/07/19(木) 20:27:28.920583デフォルトの名無しさん
2012/07/19(木) 20:30:07.040584デフォルトの名無しさん
2012/07/19(木) 20:36:49.290585デフォルトの名無しさん
2012/07/19(木) 22:02:27.63その例だと設計からおかしいぞ
stringとるならchar*とるのはいらないし文字列と数値のどちらもを直接代入できるのは基本的には悪い設計
0586デフォルトの名無しさん
2012/07/19(木) 22:03:59.72public:
int hoge;
A(int a) : hoge(a) {}
};
このコンストラクタって
A(int a){ hoge = a; }
と同じ意味?
なんでこんな書き方が用意されてるの?
仕様決めた人は代入すら面倒だったの?
0587デフォルトの名無しさん
2012/07/19(木) 22:05:22.710588デフォルトの名無しさん
2012/07/19(木) 22:05:50.40class A {
public:
const int hoge;
A(int a) : hoge(a) {}
};
こうなったときどうする?
0589デフォルトの名無しさん
2012/07/19(木) 22:10:44.09ありがとう、ものすごくなっとくした
仕様決めた人はいろんなこと考えてくれてんだな
0590デフォルトの名無しさん
2012/07/19(木) 22:11:03.91参照とかどうすんだよ
0591デフォルトの名無しさん
2012/07/19(木) 22:13:25.63え、どうするの?
0592デフォルトの名無しさん
2012/07/19(木) 23:02:16.170593デフォルトの名無しさん
2012/07/19(木) 23:07:49.230594デフォルトの名無しさん
2012/07/19(木) 23:12:28.310595デフォルトの名無しさん
2012/07/19(木) 23:16:12.170596デフォルトの名無しさん
2012/07/19(木) 23:33:17.290597デフォルトの名無しさん
2012/07/19(木) 23:36:08.020598デフォルトの名無しさん
2012/07/19(木) 23:36:38.020599デフォルトの名無しさん
2012/07/19(木) 23:53:29.240600デフォルトの名無しさん
2012/07/19(木) 23:57:41.06そのset()が例外飛ばしてきたらどうするんだろうな
0601デフォルトの名無しさん
2012/07/20(金) 00:01:03.63そんときはスパッと死ねよ
0602デフォルトの名無しさん
2012/07/20(金) 00:03:44.000603デフォルトの名無しさん
2012/07/20(金) 00:08:06.83template<typename T>
Hoge& operator=(const T& s)
{ set( s ); return *this; }
0604デフォルトの名無しさん
2012/07/20(金) 00:36:15.25*とかどうするの?
0605デフォルトの名無しさん
2012/07/20(金) 00:45:27.78どうしたらいいかな
stringstream ss;
string dami;
int suji;
ss << "unko123";
ss >> dami >> suji;
ってやったんだけど、数字取れなかった。
0606デフォルトの名無しさん
2012/07/20(金) 01:21:03.08Tがchar const *になってhoge& operator=(char const * const & s)になるだけ
0607デフォルトの名無しさん
2012/07/20(金) 01:30:14.66デリミタで調べろ
0608デフォルトの名無しさん
2012/07/20(金) 01:35:48.25peek(), ignore()
0609デフォルトの名無しさん
2012/07/20(金) 08:11:11.06別にコンストラクタで例外飛ばしても問題ないけど
0610デフォルトの名無しさん
2012/07/20(金) 08:29:14.55もう絶滅したと思ってたんだけど。
0611デフォルトの名無しさん
2012/07/20(金) 09:03:22.64リソースリークしちゃうコード書く奴は割といる。
0612デフォルトの名無しさん
2012/07/20(金) 14:09:38.39元の配列を使わなければならないのはいやなので
どうにかならないものか
0613デフォルトの名無しさん
2012/07/20(金) 14:22:27.28具体的に。アクセスの過程で要素数が変わらないのなら、事前にend()を保持しておけばよさそうだが。
0614デフォルトの名無しさん
2012/07/20(金) 14:25:56.72ありがとう
その手で行くわ
0615デフォルトの名無しさん
2012/07/20(金) 18:45:08.340616デフォルトの名無しさん
2012/07/20(金) 19:40:59.85http://ideone.com/kri9w
C#とかJavaのイテレータは終端持ってるよね
でもC++的には単体を指すiteratorも無いと色々と効率がね
0617デフォルトの名無しさん
2012/07/20(金) 19:44:08.42isEndやNextなどのメソッドを作るべきなんだよ純粋なOOPとしてはね
ただCの表記に合わせたいという不純な動機のためにオペレーターオーバーロードや始点と終点の分離なんて要らないものを書かなきゃいけない
0618デフォルトの名無しさん
2012/07/20(金) 19:51:53.48operator--()持ってるかどうかで特殊化とか出来たっけ?
http://ideone.com/gHiFP
0619デフォルトの名無しさん
2012/07/20(金) 20:00:33.57あーうんこんな感じこんな感じ
標準でこの機能ついてりゃいいんだよな
0620デフォルトの名無しさん
2012/07/20(金) 20:01:54.830621デフォルトの名無しさん
2012/07/20(金) 20:04:10.94すげぇ。まるで魔法だ
0622デフォルトの名無しさん
2012/07/20(金) 20:06:01.180623デフォルトの名無しさん
2012/07/20(金) 22:27:12.570624デフォルトの名無しさん
2012/07/21(土) 13:30:40.17Javaの勉強すれば良かったと後悔しました
0625デフォルトの名無しさん
2012/07/21(土) 13:41:32.22C++は手続型言語の仲では最も難しい部類の言語だから
それができるなら他の言語なんてすぐ覚えられるよ
0626デフォルトの名無しさん
2012/07/21(土) 13:45:34.010627デフォルトの名無しさん
2012/07/21(土) 13:45:34.370628デフォルトの名無しさん
2012/07/21(土) 13:47:41.230629デフォルトの名無しさん
2012/07/21(土) 13:47:45.740630デフォルトの名無しさん
2012/07/21(土) 13:53:46.610631デフォルトの名無しさん
2012/07/21(土) 14:04:07.093日で基礎を覚えりゃ仕事いける。
0632デフォルトの名無しさん
2012/07/21(土) 14:12:24.500633デフォルトの名無しさん
2012/07/21(土) 15:11:06.67C#かVBかC++の仕事しかやった事無いが
0634デフォルトの名無しさん
2012/07/21(土) 15:25:48.96SEの説明会みた感じだとJavaかなり多いと思う
組み込み、制御系はCだからプラプラあまり使わないらしいし
ゲームぐらいじゃないかな他にプラプラ使うとこは
0635デフォルトの名無しさん
2012/07/21(土) 15:51:44.88ゲームに限らず
表示系でもLinuxとかならC++はある
0636デフォルトの名無しさん
2012/07/21(土) 15:59:53.56JavaやC#と速度比べるとやっぱ段違いだからな
0637デフォルトの名無しさん
2012/07/21(土) 16:03:51.79他の人も利用するので、IFは綺麗ににしたい。
ってことで、IF公開/継承で隠蔽するか、ピンプルにするかで悩んでます。
それぞれのデメリット
ピンプル:外部提供機能を増やすたびに接続を書くのがめんどくさい。
IF:クラスのインスタンス化にnew が必要になる
位に捕らえてるんだけど、他に注意するべき違いってありますか?
0638デフォルトの名無しさん
2012/07/21(土) 16:05:11.58大量のアクセスをさばこうと思ったら、phpよりもいいのかな?
0639デフォルトの名無しさん
2012/07/21(土) 16:06:48.290640デフォルトの名無しさん
2012/07/21(土) 16:15:48.030641デフォルトの名無しさん
2012/07/21(土) 16:17:53.900642デフォルトの名無しさん
2012/07/21(土) 16:18:23.980643デフォルトの名無しさん
2012/07/21(土) 17:00:04.640644デフォルトの名無しさん
2012/07/21(土) 17:12:12.31どういう意味で言ってんだ?就職先か?案件の話か?
自社開発してて、グラフィック系だと基本C++の仕事が半分位だぞ。
半年〜1年連続してC++で遊べることもある。
0645デフォルトの名無しさん
2012/07/21(土) 17:14:43.040646デフォルトの名無しさん
2012/07/21(土) 17:14:59.94どっちもクラスが小さいと速度に影響する。
0647デフォルトの名無しさん
2012/07/21(土) 18:21:12.22new が要るのは pimpl もいっしょじゃね?
0648デフォルトの名無しさん
2012/07/21(土) 18:48:32.25如何せん、allocaに相当する関数を自前で作らにゃならんのが手間。
0649デフォルトの名無しさん
2012/07/21(土) 19:43:38.25deleteの面倒を見る場所は変わるから
使用感の差はあるだろうな
>>637
pimplはややトリッキーなので
知らない人が見ると理解してもらえない事があるな
0650デフォルトの名無しさん
2012/07/21(土) 19:58:03.50コンストラクター、デストラクター以外の処理速度が下がらない。
MSのコンパイラーやiccなんかだと翻訳単位超えてインライン展開してくれるからな。
0651デフォルトの名無しさん
2012/07/21(土) 20:40:34.750652デフォルトの名無しさん
2012/07/21(土) 20:55:26.98グラフィック系というと3DCG?
画像解析とかは別ものか
0653デフォルトの名無しさん
2012/07/21(土) 21:05:20.373DCGもそうだし、CODECとか医療系(CT、MRI)とかも
0654デフォルトの名無しさん
2012/07/21(土) 21:14:01.40医療かーなるほど
どうもっす探してみるっすおっす
0655デフォルトの名無しさん
2012/07/21(土) 21:16:14.63色々。ウチは2次元ベクトルデータが多い。
図面だったり、組版した文書だったり。
0656デフォルトの名無しさん
2012/07/21(土) 21:21:46.09ビジネスロジックとプリンターの中間は結局描画処理しなきゃならんから
QRコード作ったり、装飾描いたりってなるとC++になる。
0657デフォルトの名無しさん
2012/07/21(土) 21:31:40.72Cしか勉強してないから違和感が抜けないんだ…
0658デフォルトの名無しさん
2012/07/21(土) 21:35:15.990659デフォルトの名無しさん
2012/07/21(土) 21:36:21.740660デフォルトの名無しさん
2012/07/21(土) 21:37:18.480661デフォルトの名無しさん
2012/07/21(土) 21:40:04.50iostreamを使ったほうがいい理由は、streambufを変えたり、istream, ostreamの派生を
作ることで、iostreamを使った処理の出力をTCPソケットだったりstringだったり、
いろんなモノに使いまわせる点。cstdioでも似たようなことが出来なくはないが、OSに依存する。
0662デフォルトの名無しさん
2012/07/21(土) 21:44:17.45無理やり理由をひねり出すんだったら、可変長引数を使わないで済むってことかなぁ。
アレはなんでも入れれるけど、Voidポインターなんでアブネー。
あとは、開放忘れが無いとかかな。
見た目がダサいのは慣れで済むけど、APPのクラッシュはそうはいかない。
0663デフォルトの名無しさん
2012/07/21(土) 21:50:31.60それたまに聞くけどよくわからん
0664デフォルトの名無しさん
2012/07/21(土) 21:58:13.73example.Store( out1 );
MailStream out2( "no titile", "To:[email protected]" );
example.Store( out2 );
前者だとexampleの内容が、text.txtに書き込まれ、
後者だとメール送信される。
この時Store自体の実装は一切変更しなくて済む。
0665デフォルトの名無しさん
2012/07/21(土) 22:06:46.980666デフォルトの名無しさん
2012/07/21(土) 22:12:27.21streambufのサブクラス作るだけだが、
長くなるから個々には書かん
0667デフォルトの名無しさん
2012/07/22(日) 02:45:17.64Boost.InterproessのvectorstreamとbufferstreamはなぜInterprocessにあるのか分からない。
0668デフォルトの名無しさん
2012/07/22(日) 02:47:17.47自分や誰かが作ったクラスや構造体などをprintf/scanfで入出力できるようにするのは無理だけど、
iostreamの<<と>>ならできるってのは便利と言えば便利。
0669デフォルトの名無しさん
2012/07/22(日) 06:14:09.050670デフォルトの名無しさん
2012/07/22(日) 10:02:58.64参考書のタイトル頼む
0671デフォルトの名無しさん
2012/07/22(日) 10:35:17.37新品はないが中古なら
http://www.amazon.co.jp/gp/offer-listing/4756137156/ref=dp_olp_used?ie=UTF8&condition=used
もしくはISBN4-7561-3715-6でぐぐっても良い
今すぐにC++11の参考書が出てくるのでC++03の新しい参考書は控えてるような印象
0672デフォルトの名無しさん
2012/07/22(日) 12:51:08.280673デフォルトの名無しさん
2012/07/22(日) 13:50:58.50いいのかな
0674デフォルトの名無しさん
2012/07/22(日) 13:53:16.24ヘッダに書く方がいい
0675デフォルトの名無しさん
2012/07/22(日) 14:56:36.46VS使ってると警告がウザいん。因みにsize_t型が32/64bitで長さが変わることは心得てる
0676デフォルトの名無しさん
2012/07/22(日) 15:11:54.45まあこの例に限らず警告がゼロになるようにした方がとにかく無難
0677デフォルトの名無しさん
2012/07/22(日) 15:31:15.88面倒でもstatic_cast<int>してるわいつも
0678デフォルトの名無しさん
2012/07/22(日) 15:34:38.96そっちにあわせんなよ
0679デフォルトの名無しさん
2012/07/22(日) 15:47:49.79int hoge( int &unko=0 );
みたいな感じで省略されたときは返さないみたいな感じで
0680デフォルトの名無しさん
2012/07/22(日) 15:50:00.990681デフォルトの名無しさん
2012/07/22(日) 15:51:14.44計算でインデクス出して負になったときに
符号ありなら簡単にチェック出来るのに
符号なしだと単に大きなインデクスを指定したのと区別がつかないから欠点だろ
0682デフォルトの名無しさん
2012/07/22(日) 15:55:55.89const かぁ・・・
思い切り下の方ではいじる気満々なんだよな
あきらめるわ。 ありがとう。
0683デフォルトの名無しさん
2012/07/22(日) 15:57:29.02size_t残してたらキャストしないといけないところが他にも出てきたりしてウザイだろ
0684デフォルトの名無しさん
2012/07/22(日) 15:57:35.67unsignedじゃないとメモリを全部指せなくない?
メモリアドレスより大きい型使えればいいんだけど・・・。
0685デフォルトの名無しさん
2012/07/22(日) 15:59:09.80int hoge() { int unused; return hoge(unused); }
0686デフォルトの名無しさん
2012/07/22(日) 16:00:53.6563bitもあれば十分だろ
0687デフォルトの名無しさん
2012/07/22(日) 16:02:35.17そんな状況は value_type が (signed/unsigned) char の vector か vector<bool> でしか
ありえないわけで、あんまり強い根拠だとは思えないなぁ。
0688デフォルトの名無しさん
2012/07/22(日) 16:04:50.820689デフォルトの名無しさん
2012/07/22(日) 16:33:06.24そもそも負の値があっちゃいかんから、
負の値を渡すなという意味合いでもある。
明示的なキャストが無い場合警告を出すことで凡ミスを検知できる。
負の値を使いたい計算なら計算結果にoff_tなんか使えばいい。
0690デフォルトの名無しさん
2012/07/22(日) 16:38:46.41という主張は昔は正しかったかも知れないが今はCPU側に保護機能あるから大丈夫っしょ
0691デフォルトの名無しさん
2012/07/22(日) 16:47:07.760692デフォルトの名無しさん
2012/07/22(日) 16:47:20.08http://stackoverflow.com/questions/10168079/why-is-size-t-unsigned
> Bjarne Stroustrup wrote in The C++ Programming Language:
>
> The unsigned integer types are ideal for uses that treat storage as a
> bit array. Using an unsigned instead of an int to gain one more bit to
> represent positive integers is almost never a good idea. Attempts to
> ensure that some values are positive by declaring variables unsigned
> will typically be defeated by the implicit conversion rules.
> Another relevant article by Scott Meyers is here <http://www.aristeia.com/Papers/C++ReportColumns/sep95.pdf>.
> To summarize, he recommends not using unsigned in interfaces,
> regardless of whether the value is always positive or not. In other
> words, even if negative values make no sense, you shouldn't
> necessarily use unsigned.
0693デフォルトの名無しさん
2012/07/22(日) 16:47:51.980694デフォルトの名無しさん
2012/07/22(日) 16:49:01.93そもそもこれに意味があるのか判らんな。
負だろうが正だろうが、範囲チェックするならするし、
しないならしないだろうから結局変わらんだろ。
あと、unsignedならsignedと違って0下回った時シグナルとかで検知できるぞ。
0695デフォルトの名無しさん
2012/07/22(日) 16:50:40.91計算結果が負になった時だけチェックできても中途半端だよ。
ちゃんと上限もチェックしようよ。
0697デフォルトの名無しさん
2012/07/22(日) 16:53:54.74なんかそんなメンバー無いって言われる
0698デフォルトの名無しさん
2012/07/22(日) 16:55:17.70変わらんならsigned使えよ。まともに引き算できないunsignedウザイから。
> あと、unsignedならsignedと違って0下回った時シグナルとかで検知できるぞ。
値がラップするだけのはずだけど、どういうこと?
0699デフォルトの名無しさん
2012/07/22(日) 16:56:04.470700デフォルトの名無しさん
2012/07/22(日) 16:59:23.020701デフォルトの名無しさん
2012/07/22(日) 17:04:13.48例えば、OSによるけどFPE_OVERFLOWとか。浮動小数点数でも無いのに飛んでくる。
http://docwiki.embarcadero.com/RADStudio/ja/Signal%EF%BC%88C_RTL%EF%BC%89
0702デフォルトの名無しさん
2012/07/22(日) 17:05:18.15>値がラップする
どういう意味?
0703デフォルトの名無しさん
2012/07/22(日) 17:06:30.62俺に言われても困る。C++の標準委員会とかそのへんに言えよ。
0704デフォルトの名無しさん
2012/07/22(日) 17:11:42.70> FPE_INTOVFLOW および FPE_INTDIV0 シグナルは整数演算によって生成され,その他は浮動小数点演算によって生成されます。
FPE_OVERFLOW は飛びませんね。
FPE_INTOVFLOW も signed だけでしょう。
0705デフォルトの名無しさん
2012/07/22(日) 17:12:48.76unsigned int x = -1 とすれば x は UINT_MAX になるものと規格で定められている。
0706デフォルトの名無しさん
2012/07/22(日) 17:15:25.76どうせ大きいインデックスなんて設計ミスしなきゃ使わないし
仮に使うとしてもインデックスをクラスで置き換えたBigVectorみたいなの作るし
0707デフォルトの名無しさん
2012/07/22(日) 17:20:21.54今さら標準を変えるほど大きな問題ではない。問題ないとわかってるアプリ側で
signedにキャストすれば十分。
問題は標準コンテナがunsignedを使ってるからって自作のコードでもunsignedを
使いまくるやつら。
0708デフォルトの名無しさん
2012/07/22(日) 17:21:19.29FPE_ の意味わかってる?
0709デフォルトの名無しさん
2012/07/22(日) 17:24:24.50> まともに引き算できないunsigned
なんて言ってる奴は、自分からアホ公言してるのと同じだし。
0710デフォルトの名無しさん
2012/07/22(日) 17:27:04.07そうね間違えたFPE_INTOVFLOW。
>FPE_INTOVFLOW も signed だけでしょう。
試してみたら?
0711デフォルトの名無しさん
2012/07/22(日) 17:32:45.90まずは unsigned 整数に負の値を入れてシグナルの発生を確認したコードを貼ってくれ。
0712デフォルトの名無しさん
2012/07/22(日) 17:35:09.98教科書を書いている人のなかには、負にならない数値を表現するのに unsigned 型を使うことを推奨している人たちもいます。これは自己文書化のためです。
しかしCの場合には、実際のところ文書化するメリットよりもバグを引き起こすデメリットの方が上回ります。次の例を考えてみましょう。
for (unsigned int i = foo.Length()-1; i >= 0; --i) ...
このコードは止まりません。gccはこの種のバグに気づいて警告してくれることもありますが、気づいてくれないことも多々あります。
signed と unsigned を比較するときにも同じくらいひどいバグを引き起こすおそれがあります。つまり、Cの型昇格の仕組みによって、unsigned 型は期待と異なる動作をするおそれがあるのです。
したがって、変数が負でないことを示すにはアサーションを使ってください。unsigned 型を使ってはいけません。
0713デフォルトの名無しさん
2012/07/22(日) 17:36:11.770714デフォルトの名無しさん
2012/07/22(日) 17:45:31.36解説もとぬ
0715デフォルトの名無しさん
2012/07/22(日) 17:48:19.19(お前の日本語では何を相談しようとしてるのかさっぱりわからんから問題の)C++(ソースコードとコンパイラからのエラーメッセージ)で(問題を示せば)おk
0716デフォルトの名無しさん
2012/07/22(日) 17:51:12.42unsignedでシグナル飛んだら規格違反じゃないの?
0717デフォルトの名無しさん
2012/07/22(日) 17:52:37.37foo.Length( ) が 0 になるかも知れないのに
> unsigned int i = foo.Length()-1;
なんていうコードを書く人は、どうせ他のところでもバグるので unsinged 云々の話じゃないと思う。
0718デフォルトの名無しさん
2012/07/22(日) 17:57:57.000719デフォルトの名無しさん
2012/07/22(日) 17:59:06.610720デフォルトの名無しさん
2012/07/22(日) 18:01:39.63それが出来ないならBASICでも使ってろカス
0721デフォルトの名無しさん
2012/07/22(日) 18:03:45.90え?オーバーフローとアンダーフローって未定義じゃないの?
0722デフォルトの名無しさん
2012/07/22(日) 18:03:53.01直接そのものは無いけどmap<Key,list<Value>>でいいんじゃないの?
0723デフォルトの名無しさん
2012/07/22(日) 18:04:05.950724デフォルトの名無しさん
2012/07/22(日) 18:05:53.65作れるだろ?。
map<T,U>なところを
map<T,pair<U,int>,COMP>に、pairの後ろのintはつっこんた順にインクリメント、
COMPはpairの後側で比較、取り出すところはit->secondを*it->second.secondにすればよかろ。
0725724
2012/07/22(日) 18:07:14.34×取り出すところはit->secondを*it->second.secondにすれば
→取り出すところはit->secondを*it->second.firtにすれば
0726デフォルトの名無しさん
2012/07/22(日) 18:19:09.53signedの演算についてはそうだけど、unsignedについてはそもそもオーバーフローというものが
起こらないことになっている。
3.9.1/4
> Unsigned integers, declared unsigned, shall obey the laws of arithmetic modulo 2n where
> n is the number of bits in the value representation of that particular size of integer. *46
...
> 46) This implies that unsigned arithmetic does not overflow because a result that cannot
> be represented by the resulting unsigned integer type is reduced modulo the number that
> is one greater than the largest value that can be represented by the resulting unsigned
> integer type.
0727デフォルトの名無しさん
2012/07/22(日) 18:23:19.42>>>717 signedならfoo.Length()が0だろうが何の問題も無いコードなのに、何言ってるの?
そういうことを言いたいのではなく、変数の取りえる範囲を考えずにコーディングする奴は馬鹿だってこと。
何でもかんでも考えなしに signed にすれば OK なんて思って奴はマ辞めた方がいい。
0728デフォルトの名無しさん
2012/07/22(日) 18:30:09.83誰も「変数の取りえる範囲を考えずにコーディングする」とも「何でもかんでも考えなしに signed にすれば OK」とも言ってないよ。
値の範囲を考えた上で、signedで問題ないところはsigned使えって話。
0729デフォルトの名無しさん
2012/07/22(日) 18:41:04.81> 誰も「変数の取りえる範囲を考えずにコーディングする」
unsigned int i = foo.Length()-1; は、範囲を考えずにコーディングしているとしか思えないけど。
> 「何でもかんでも考えなしに signed にすれば OK」とも言ってないよ。
だったら、どう考えればいいかを書かないとダメでしょ。
>値の範囲を考えた上で、signedで問題ないところはsigned使えって話。
それなら、「値の範囲を考えた上で、unsignedで問題ないところはunsigned使えって話。」でも
同じだが。
0730デフォルトの名無しさん
2012/07/22(日) 18:47:20.61端から順に返すイテレータってどうやって書けばいいか
どっかにサンプルとかある?
0731デフォルトの名無しさん
2012/07/22(日) 18:57:53.91> unsigned int i = foo.Length()-1; は、範囲を考えずにコーディングしているとしか思えないけど。
-1になるからここではunsigned使うわけがないってことか?
気付いてるかどうかわかんないけど、-1が無くてもバグってるからね。
> それなら、「値の範囲を考えた上で、unsignedで問題ないところはunsigned使えって話。」でも
> 同じだが。
どちらでも問題ないところでも、unsignedを使うと上でいろいろ挙げられてるようにデメリットが大きい。
だからなるべくsignedを使えって話。
0732デフォルトの名無しさん
2012/07/22(日) 19:00:06.92http://codepad.org/GoZTWEPM
ハードウェアのオプションしないと符号付きだろうが
符号なしだろうが反応しねぇなぁ
0733デフォルトの名無しさん
2012/07/22(日) 19:03:24.240734デフォルトの名無しさん
2012/07/22(日) 20:02:54.77オプションさえつければシグナル発生するの?
0735デフォルトの名無しさん
2012/07/22(日) 20:10:19.08> In C, SIGFPE (or any other signal) will never be issued for unsigned integer types. These are guaranteed by the C standard to wrap around silently.
ですよねー
0736デフォルトの名無しさん
2012/07/22(日) 20:17:47.93直接的ではないけどboost.graphの深さ優先探索かな。
visitorで実現できるけどiterator化するのは少し難しい。
できないことはないけどややこしいだけだよ。
0737デフォルトの名無しさん
2012/07/22(日) 20:22:54.37> -1になるからここではunsigned使うわけがないってことか?
というか、-1 になることを気づいていないんじゃないかと。
まあ、本当のところはコード書いた本人に聞くしかないけど。
> 気付いてるかどうかわかんないけど、-1が無くてもバグってるからね。
i >= 0 のことならわかるけど、これも unsigned の値の範囲を考えればわかる話しだろ。
それ以外にあるなら、具体的に書いてくれ。
>どちらでも問題ないところでも、unsignedを使うと上でいろいろ挙げられてるようにデメリットが大きい。
>だからなるべくsignedを使えって話。
問題ないのに、デメリット?
君の主張は、よく考えなくても問題ないケースが多いから signed の方がメリットあると言う風にしか
思えないけど。
よく考えても、unsigned の方がデメリットあると言うなら、具体例 plz
0738デフォルトの名無しさん
2012/07/22(日) 20:41:58.61値の範囲について signed, unsignged どちらでも問題ないところでも、 unsigned を使うと
暗黙変換の残念なルールにより間違いが起こったりコンパイラの警告を黙らせるための
汚い回避策を講じないといけなくなるなど、デメリットが多い。
0739デフォルトの名無しさん
2012/07/22(日) 20:43:08.33いくつかあるメニューの中で何か1つ選択したときそこだけを拡大して表示する方法のヒントをご教授願いたいです。
0740デフォルトの名無しさん
2012/07/22(日) 20:59:59.11したりしなかったりするよ。実装依存。Cの仕様が云々上で言ってたりするがCは関係ない。
そもそもハード依存でCの機能じゃないからCPUとコンパイラーが対応してるかどうか次第。
コンパイラーが対応してなくてもアセンブリでスイッチ入れられるものもあるらしいがそっちは知らん。
0741デフォルトの名無しさん
2012/07/22(日) 21:00:24.67ありがとう
iteratorの勉強をするときのネタとして自分への宿題とするわ
0742デフォルトの名無しさん
2012/07/22(日) 21:12:46.07ハード依存で整数オーバーフローに対してシグナルが発生するとしたら
C,C++コンパイラはunsignedについてそれを避けるようにコンパイルする義務が
あるように読めるのだが。 >726
0743デフォルトの名無しさん
2012/07/22(日) 21:15:22.72unsignedの演算結果について実装依存や未定義の部分は無いのだから、
そんな動作をすると規格準拠のコンパイラとして認められないだろう。
で、例えばどのコンパイラがどんなスイッチでそんな動作をするの?
0744デフォルトの名無しさん
2012/07/22(日) 21:16:03.500745デフォルトの名無しさん
2012/07/22(日) 21:18:36.950746デフォルトの名無しさん
2012/07/22(日) 21:27:19.91コンパイラ以外は既に出てるがな
gccでもftrapサポートしてるかfpu_flags関数使えると行けるぞ
fpu_flagsはgcc固有じゃなくOSとハードウェア固有だけど
0747デフォルトの名無しさん
2012/07/22(日) 21:27:59.950748デフォルトの名無しさん
2012/07/22(日) 21:33:30.47http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Option-Summary.html
http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Code-Gen-Options.html
> -ftrapv
> This option generates traps for signed overflow on addition, subtraction, multiplication operations.
これのこと?・・・じゃないよね?
"ftrap"って何?
0749デフォルトの名無しさん
2012/07/22(日) 21:34:37.180750デフォルトの名無しさん
2012/07/22(日) 21:37:39.40http://www.google.co.jp/search?q=%22fpu_flags%22
"fpu_flags関数"とやらも検証できない。
0751デフォルトの名無しさん
2012/07/22(日) 21:40:18.47じゃないな。こっちもググったけどでてこないし。実機のmanぐらいにしか乗ってないんだろうな。
0752デフォルトの名無しさん
2012/07/22(日) 21:44:49.640753デフォルトの名無しさん
2012/07/22(日) 21:47:57.540754デフォルトの名無しさん
2012/07/22(日) 22:03:37.35-ftrapvって結構危険よ。今は知らないけど昔は加算とか取りこぼしてた。
0755デフォルトの名無しさん
2012/07/22(日) 22:04:25.03gccはコンパイラの名前じゃなかったのか・・・
0756デフォルトの名無しさん
2012/07/22(日) 22:12:33.610757デフォルトの名無しさん
2012/07/22(日) 22:30:34.15んなこと言い出したらスレッドセーフとかって話も論外だろうし
環境依存しないオーバーフロー検知なんて無理だって
あと、オーバーフローが検知できりゃsignalじゃなかろうがなんでもいいんだろ
0758デフォルトの名無しさん
2012/07/22(日) 22:52:01.65C++03までの規格でスレッドセーフを語ることは確かにこのスレにとっては論外だ。
C++11により、規格に沿ってdata raceの有無を語ることができるようになった。
環境依存しないオーバーフロー検知なんて話は誰もしていない。
0759デフォルトの名無しさん
2012/07/22(日) 22:57:48.54> 暗黙変換の残念なルール
だから、具体的に書いてよって言ってるんだが。
>>747
考えなしに singed 使うのがおかしい、と言ってるだけだが。
0760デフォルトの名無しさん
2012/07/22(日) 23:09:58.75unsigned int ichi = 1;
assert(ichi > -1); // fails
assert(ichi - 2 == -1); // fails
0761760
2012/07/22(日) 23:10:59.75ん?こっちは通るか。ごめん。
0762760
2012/07/22(日) 23:17:43.65assert(ichi - 2 < 1); // fails
0763デフォルトの名無しさん
2012/07/22(日) 23:18:04.41「値の範囲を良く考えて」も、そんなコード書いてるのか?
0764デフォルトの名無しさん
2012/07/22(日) 23:22:21.11普通こうじゃね?
int f(unsigned a, unsigned b)
{
assert( a < a + b );
return a + b;
}
0765デフォルトの名無しさん
2012/07/22(日) 23:23:41.24考えるべき「値の範囲」ってのが変数や関数の値域のことならまだわかるが、
その値を使った演算すべての値の範囲を考えろと言われても無理だろ。
0766デフォルトの名無しさん
2012/07/22(日) 23:37:36.19> その値を使った演算すべての値の範囲を考えろと言われても無理だろ。
「演算すべての値」というのが意味不明だが、演算結果と仮定して、
演算結果の範囲もわからんままコード書いてるということなのか?
0767デフォルトの名無しさん
2012/07/23(月) 00:03:58.99例えば何かのクラスで「サイズ」を返す関数を設計するとき、戻り値が負になることが無い
のはわかってるから unsigned にしたとする。
クラス利用者が「a のサイズから b のサイズを引いて N より小さくなるとき」という仕様に
対してこんなコードを書いたとする。
if (a.size() - b.size() < N) ...
このコードは a.size() < b.size() の場合に正しく動かない。
最初の unsigned の選択を守ったまま正しく動くようにコードを変形することもできるけど、
仕様とコードは乖離するし、同様の問題が他の利用箇所にもあることは十分考えられるので
根本的な解決とは言い難い。
最初の設計時点でこのような利用をされることが「無い」と判断することは不可能なので、
別途特別な理由が無い限りは signed にしておいたほうが経済的。
0768デフォルトの名無しさん
2012/07/23(月) 00:05:28.86boostのxmlパーサあたりとか同じような感じじゃね。使い方とか調べるの面倒くさいけど。
0769デフォルトの名無しさん
2012/07/23(月) 00:35:28.590770デフォルトの名無しさん
2012/07/23(月) 01:05:21.50これを考慮してナントカする必要を感じるのは、この程度の違いで大問題を引き起こす新人に
なにかさせる場合だけだな。
0771デフォルトの名無しさん
2012/07/23(月) 01:39:09.31そこは禿も設計ミスだと認めておる。
http://www.stroustrup.com/Programming/25_embedded.ppt
> - You can’t completely avoid unsigned arithmetic
> - Indexing into standard library containers uses unsigned
> (in my opinion, that’s a design error)
0772デフォルトの名無しさん
2012/07/23(月) 07:07:36.32unsignedなら極度に大きい値になるので多分segmentation faultが出るだろう。
0773デフォルトの名無しさん
2012/07/23(月) 08:21:02.36(´Д`)ハァ…
0774デフォルトの名無しさん
2012/07/23(月) 10:41:33.49馬鹿だろ
この程度で大問題を引き起こす言語だからこそ
プロでも数年に1度はやっちゃうし、その上
見つけにくくて困るんだよ
0775デフォルトの名無しさん
2012/07/23(月) 12:08:17.92なんて考えること自体が馬鹿
プロなのにこの程度の問題を数年に1度やっちゃう奴は…
0776デフォルトの名無しさん
2012/07/23(月) 12:19:27.190777デフォルトの名無しさん
2012/07/23(月) 12:36:52.94for(int i=0; i<max; i++)...
みたいなので警告でて
for(size_t i=0; i<max; i++)...
と書き直すときの敗北感
0778デフォルトの名無しさん
2012/07/23(月) 13:07:26.110779デフォルトの名無しさん
2012/07/23(月) 13:24:22.12oppaiをセットするとき、ついでにchinkoもセットするんだけど
引数でchinkoが省略されているときは なにもしないようにしたい
どうしたらいいかな
素直に別関数作った方がいいのかな
0780デフォルトの名無しさん
2012/07/23(月) 13:27:10.45こんな場合はsize_tにしづらいな
出来なくはないけど
0781デフォルトの名無しさん
2012/07/23(月) 13:40:35.920782デフォルトの名無しさん
2012/07/23(月) 13:47:57.93あえてsize_tにするとこうなる
0783デフォルトの名無しさん
2012/07/23(月) 15:47:03.36どうしたら簡潔に書ける?
0784デフォルトの名無しさん
2012/07/23(月) 16:03:35.48再帰関数に関数ポインタ食わせる話?
0785デフォルトの名無しさん
2012/07/23(月) 16:04:22.980786デフォルトの名無しさん
2012/07/23(月) 17:55:12.650787675
2012/07/23(月) 18:00:39.81長さ系の引数はとりあえずsize_tで統一しとくわ
0788デフォルトの名無しさん
2012/07/23(月) 19:16:33.940789デフォルトの名無しさん
2012/07/23(月) 20:05:22.680790デフォルトの名無しさん
2012/07/23(月) 20:06:12.76. △ △
..----━━=≦[]≧=━━---- .----━━=≦[]≧=━━----
〔 ]_. . п п _[ 〕
. { ≡|-二二二/ ̄ ̄\二二二-|≡ }
. [II/ ∪^|ロ□|□ロ|^∪ ヽII]
lロ ⌒ ロl
(._。○。_)
0791デフォルトの名無しさん
2012/07/23(月) 20:54:08.560792デフォルトの名無しさん
2012/07/23(月) 21:21:01.04W3 ですねわかります
0793デフォルトの名無しさん
2012/07/23(月) 21:40:03.89っていうのは遅くなるからhoge.max()は外に出せ、みたいな話あるけど
ループ外に出すと変数使ってうっとおしいんだけどいい方法ある?
って聞こうと思ったけど、やっぱりいいや。
0794デフォルトの名無しさん
2012/07/23(月) 21:42:23.43この程度でうっとおしいと思うならしらん
0795デフォルトの名無しさん
2012/07/23(月) 21:45:38.74にする
0796デフォルトの名無しさん
2012/07/23(月) 21:55:26.290797デフォルトの名無しさん
2012/07/23(月) 22:03:26.42なら最初から書き込むな
0798デフォルトの名無しさん
2012/07/24(火) 02:06:54.21たまには正月に顔見せに帰ってやれよ。
0799デフォルトの名無しさん
2012/07/24(火) 02:52:32.360800デフォルトの名無しさん
2012/07/24(火) 04:01:06.28指数部を割り出すのに対数関数使ってるかと思うんですがlog(x)一回より何倍も速いし。
0801デフォルトの名無しさん
2012/07/24(火) 04:13:05.04スレ違い。
普通、実数演算ユニット周辺に変換ロジックも実装されている。
0802デフォルトの名無しさん
2012/07/24(火) 07:18:11.51なにかヒントを教えてください
0803デフォルトの名無しさん
2012/07/24(火) 07:28:50.710804デフォルトの名無しさん
2012/07/24(火) 07:32:40.89自宅のノートパソコンに認証付きプロキシ入れてルーターでポート開放
VPNかSSHポートフォワーディング使うとより安全
あとは該当板へ
0805デフォルトの名無しさん
2012/07/24(火) 08:01:31.57しかし自分はサーバーの事とかよくわからないので
Cとフリーのライブラリだけでできる方法を知りたいんです
よろしくお願いします
0806デフォルトの名無しさん
2012/07/24(火) 08:13:07.93ライブラリ使えばいいってもんじゃないぞ
今はクッキーもハンドルしなきゃならんし
ttp://monazilla.org/index.php?c=6-20
どうしても自作したいならここに書いてる通りにすればいい
通信はC++の範囲外なのであとは適当なスレに行ってくれ
0807デフォルトの名無しさん
2012/07/24(火) 09:32:57.16サーバープログラムを作ろうとするとか茨の道すぎるだろww
0808デフォルトの名無しさん
2012/07/24(火) 10:18:34.70無線LANルータのプログラムなんて、そんなに文献無いだろ
0809デフォルトの名無しさん
2012/07/24(火) 10:22:56.64意味不明なんだけど何で無線LANルータが出てきた?
0810デフォルトの名無しさん
2012/07/24(火) 10:32:37.73丁寧な口調が剥がれてるぞ
知識ないんだったらあるやつの言葉に従っとけ
0811デフォルトの名無しさん
2012/07/24(火) 10:34:10.98プログラムの入門書はいっぱいあるのにそういう実践的な技術の本って本屋で見かけないんだけど
0812デフォルトの名無しさん
2012/07/24(火) 10:36:51.27検索しろ
0813デフォルトの名無しさん
2012/07/24(火) 11:30:08.92getChinko( index )->SetName("magnum")->SetSize("13cm");
みたいなやつ
例外を使いたくない環境下ではエラーを検知しづらくて
いやなんだけど
0814デフォルトの名無しさん
2012/07/24(火) 11:54:17.960815デフォルトの名無しさん
2012/07/24(火) 11:54:18.40自前のヌルちんこを返す ってのがポイントなんだな
0816デフォルトの名無しさん
2012/07/24(火) 12:13:05.39チェーンにする意味のあるメソッドならそうすればいい
無意味ならやらない方がいい
0817デフォルトの名無しさん
2012/07/24(火) 12:25:10.320818デフォルトの名無しさん
2012/07/24(火) 14:16:40.190819デフォルトの名無しさん
2012/07/24(火) 14:17:41.080820デフォルトの名無しさん
2012/07/24(火) 14:23:14.11http://toro.2ch.net/test/read.cgi/tech/1341052801/76
0821デフォルトの名無しさん
2012/07/24(火) 14:25:07.270822デフォルトの名無しさん
2012/07/24(火) 16:39:17.840823デフォルトの名無しさん
2012/07/24(火) 16:49:19.48関数なら普通に継承されるけど
http://ideone.com/74iGM
何に困ってるかソース例書いてみたら?
0824デフォルトの名無しさん
2012/07/24(火) 17:23:39.940825デフォルトの名無しさん
2012/07/24(火) 17:25:59.610826デフォルトの名無しさん
2012/07/24(火) 17:37:05.33アップル製品と(Windows or Linux)のPCどっちが好き?
0827デフォルトの名無しさん
2012/07/24(火) 17:40:14.91問題は、作りたいものに必要なライブラリ次第だ。
0828デフォルトの名無しさん
2012/07/24(火) 17:55:24.97あっれー出来たわ
なんで出来ないと思ったんだろおれ
0829デフォルトの名無しさん
2012/07/24(火) 18:10:04.670830デフォルトの名無しさん
2012/07/24(火) 18:21:12.13コンパイルエラー
0831デフォルトの名無しさん
2012/07/24(火) 18:47:40.430832デフォルトの名無しさん
2012/07/24(火) 19:17:21.85派生クラスでもオーバーロードしたんじゃない?
0833デフォルトの名無しさん
2012/07/24(火) 19:40:26.93Objective-CもC++もOS関係無いだろ
0834デフォルトの名無しさん
2012/07/24(火) 19:42:31.75直接関係ないけど、宗教的にはある。
0835デフォルトの名無しさん
2012/07/24(火) 19:45:39.71UNIX系で発展してる言語ではある
むしろAppleとの馴れ初めは短い
0836デフォルトの名無しさん
2012/07/24(火) 19:46:51.540837デフォルトの名無しさん
2012/07/24(火) 21:25:28.63CからならObjective-Cのほうが楽
Objective-C++てのもあるぞ
0838デフォルトの名無しさん
2012/07/24(火) 21:29:02.25なぜC++使わずにObjective-C使うのかがわからなくなる
0839デフォルトの名無しさん
2012/07/24(火) 21:45:16.39え、そうか?
見た目が違うからかもしれないがC++より手こずったぞ
0840デフォルトの名無しさん
2012/07/24(火) 21:55:37.73なにそのひし形継承みたいな
0841デフォルトの名無しさん
2012/07/24(火) 22:00:09.22改悪もクソも移植用のブリッジだろ
アレで本腰入れて開発するつもりか?
0842デフォルトの名無しさん
2012/07/25(水) 03:44:29.12そこのところをうまく、Structure of Arrayにする方法ってあるのでしょうか?
0843デフォルトの名無しさん
2012/07/25(水) 04:01:54.220844デフォルトの名無しさん
2012/07/25(水) 04:10:53.34`SoAにしたいならすればいい。メンバとして配列を幾つか抱えればいいだけだから、
寧ろ書きやすいと思うが。一体、なにをどう「うまく」やりたいんだ?
0845デフォルトの名無しさん
2012/07/25(水) 18:23:54.78こういうこと?
ttp://ideone.com/Aypru
0846デフォルトの名無しさん
2012/07/25(水) 18:52:08.33ttp://ideone.com/Kup5A
VCの実装だとstd::arrayはスタックに確保される。
初期化ができるのは、デフォルトのコンストラクタが一切定義されてないので、POD構造体の初期化的なことができる。
0847デフォルトの名無しさん
2012/07/25(水) 19:11:42.56何か警告が出る
..\Array2.cpp: In function 'int main()':
..\Array2.cpp:22:38: warning: missing braces around initializer for 'std::array<Vector<float>, 16u>' [-Wmissing-braces]
..\Array2.cpp:22:38: warning: missing braces around initializer for 'std::array<Vector<float>, 16u>::value_type [16] {aka Vector<float> [16]}' [-Wmissing-braces]
..\Array2.cpp:22:38: warning: missing braces around initializer for 'std::array<Vector<float>, 16u>::value_type {aka Vector<float>}' [-Wmissing-braces]
-std=c++0x付けてるんだが
0848デフォルトの名無しさん
2012/07/25(水) 19:12:07.880849デフォルトの名無しさん
2012/07/25(水) 19:15:11.71こうやったら警告なくなった
SoAのVectorのarray[16]で、さらにVectorは要素が4つあるから4重カッコになるのか
0850デフォルトの名無しさん
2012/07/25(水) 20:03:36.96GCCは使ったこと無いんで正直分からない。すまない。
VCも最近、規格追従度が微妙になってきたしなぁ。参った。
0851デフォルトの名無しさん
2012/07/25(水) 21:40:24.41なんとか識別子?
0852デフォルトの名無しさん
2012/07/25(水) 21:49:36.680853デフォルトの名無しさん
2012/07/25(水) 22:49:19.900854デフォルトの名無しさん
2012/07/25(水) 22:49:27.33ttp://www.geocities.jp/ky_webid/cpp/language/006.html
0855デフォルトの名無しさん
2012/07/25(水) 23:17:55.100856デフォルトの名無しさん
2012/07/25(水) 23:27:30.57C++の修飾対象とは宣言に伴うインスタンスの事。
だからそれらが当てはまらない指定子が正しい。
0857デフォルトの名無しさん
2012/07/25(水) 23:31:11.140858デフォルトの名無しさん
2012/07/25(水) 23:36:42.940859デフォルトの名無しさん
2012/07/26(木) 00:39:42.880860デフォルトの名無しさん
2012/07/26(木) 00:51:31.430861デフォルトの名無しさん
2012/07/26(木) 08:08:27.44メンバ変数の衝突を、どうやって回避しようか悩んでます。
命名規則には、セオリー的なものはあるのでしょうか?
---------------
class IHoge
{
virtual void up()=0;
};
class IHoge2
{
virtual void up()=0;
};
---------------
class A
:public IHoge
,public IHoge2
{
void up(){} //<- どっちかわからない
}
今は hoge_up()とhoge2_up() というメンバ名にすれば良いのかなぁと思ってるんですが、
もっと見栄えの良い方法はありますか?
0862デフォルトの名無しさん
2012/07/26(木) 10:32:42.16インターフェイス側を変えずに実装する方法の一例
http://ideone.com/xJyi4
0863デフォルトの名無しさん
2012/07/26(木) 10:34:13.450864デフォルトの名無しさん
2012/07/26(木) 11:20:41.57自動で処理するいい方法ある?
a->getChinko()->lock()->polish()->shoot()->unlock();
を
a->getChinko()->polish()->shoot();
みたいな感じで済ます方法というか、うまくいえない
0865デフォルトの名無しさん
2012/07/26(木) 11:28:18.550866デフォルトの名無しさん
2012/07/26(木) 11:28:49.13ttp://codepad.org/ul7zl8vX
0867デフォルトの名無しさん
2012/07/26(木) 11:32:28.61コードまでありがとうございます。
ここまでやらないとダメなのか…。
ミスが起きそうなので、
衝突したらIF側を変える方向でやってみます。
>>863
数人で組むにあたり、ぶつかったらどうしよう・・という流れでした。
0868デフォルトの名無しさん
2012/07/26(木) 11:44:35.71値を返していいなら
http://ideone.com/sdbpO
0869デフォルトの名無しさん
2012/07/26(木) 12:55:41.45class A{
public: B unko;
};
class B :public A{
public: int chinko;
};
これってどうすればいいんだっけ
0870デフォルトの名無しさん
2012/07/26(木) 13:01:13.46諦める。
0871デフォルトの名無しさん
2012/07/26(木) 13:07:25.18これマジなら、関数ごとに一時変数を作ってコピーする馬鹿っぽいソースになりそうで嫌なんだけど
http://www2.teu.ac.jp/aqua/GS/Wiki/?Program%20Memo#zcfe8c9f
0872デフォルトの名無しさん
2012/07/26(木) 13:13:56.74それ、一体何十年前の記事?
60fpsで数百回ってことは、高々秒間一万回前後でしょ。
そんなのんびりした関数で遅いの速いのなんてナンセンスでしょ。
つーか、本気で高速化を検討するなら、実測が基本よ。
0873デフォルトの名無しさん
2012/07/26(木) 13:14:03.30それともどんなに手間をかけてでも 1 ナノ秒でも速くしたい?
0874デフォルトの名無しさん
2012/07/26(木) 13:20:42.71その関数内で大量にループ回してループ内でアクセスするならな
0875デフォルトの名無しさん
2012/07/26(木) 13:37:40.95ポインタで自己参照体を持つしかない
class B;
class A {
public:
A(B* bp = 0) : unko(bp) {}
B* unko;
};
class B : public A {
public:
B(int i = 0, B* bp = 0) : A(bp), chinko(i) {}
int chinko;
};
int main()
{
B b(123);
b.unko = &b;
A* ap = new A(&b);
std::cout << ap->unko->chinko << std::endl;
std::cout << b.unko->chinko << std::endl;
}
0876デフォルトの名無しさん
2012/07/26(木) 13:43:38.50件の記事のコードで試してみたけど、差が出ないわ。
つーか、アセンブリ出力見る限り全く同じコードになったよ。
0877デフォルトの名無しさん
2012/07/26(木) 13:49:19.67そんな事を言っていたら仮想関数の呼び出しはどうなる
それにthisがレジスタに持たれれば関係ないだろ?
x86のようなレジスタが少ないCPUなら少しはコストが掛かるだろうが
x64で最適化を掛けてコンパイルすれば高い確率でthisをレジスタに
してくれるのでは?
0878デフォルトの名無しさん
2012/07/26(木) 13:51:27.39件の記事の例くらい簡単な内容なら、それすら杞憂ですぜ。>876はx86ですから。
0879デフォルトの名無しさん
2012/07/26(木) 14:11:18.67>with the this pointer being passed via register ECX on the x86 architecture.
ってthiscallのドキュメントにわざわざ明記されてるくらいだしね
0880デフォルトの名無しさん
2012/07/26(木) 15:39:07.33だいたい>>871のコードは実数をフラグに使っていて、しかも実数の配列を
アクセスしてるんだろ?そしたらレジスタではなく必ずメモリ経由になり、まあ
L2キャッシュに乗る分もあるけど、メモリレイテンシが一番大きいのでthisなんて
コストはかき消されてしまうと思う
VC+SSE2ならこのフラグがXMMに乗ってしまう
で、配列は相変わらずメモリ or L1 or L2アクセス
thisのコストを引き合いに出したいのなら大容量の配列相手ではなく、double
も使わず、もっと整数のメンバ変数を多量に使ったプログラムにすべきだな
0881デフォルトの名無しさん
2012/07/26(木) 15:44:29.20teuって、パソコン通信の時代は一騎当千の奴が結構いたと思ったんだけどなぁ。
0882デフォルトの名無しさん
2012/07/26(木) 16:08:33.82って
int A = ( B < C );
と同じ結果になりますが、
条件判定の結果は1(true時)または0(false時)であることが保証されていますか?
0883デフォルトの名無しさん
2012/07/26(木) 16:16:09.640884882
2012/07/26(木) 16:17:59.350885 ◆VD2btbRbPs
2012/07/26(木) 18:43:46.20#include<stdlib.h>
#include<malloc.h>
#define NODE_NUM 10
#define RAND_SEED 0x1031000
必要な関数・構造体の定義をここに書く
int main(void){
struct BST_Node *T_root;
int i;
T_root=(struct BST_Node*)malloc(sizeof(struct BST_Node));
T_root->left=T_root->right=NULL; T_root->value=0;
srand(RAND_SEED);
for(i=0;i<NODE_NUM; i++){
insert_v(T_root,rand()/(double)RAND_MAX*NODE_NUM*10);
}
木の高さや木の形をここで表示
}
補足 プログラムを書いてくださいますようお願い申し上げます
[3] 環境
[3.1] OS:Windows7
[3.2] bcpad C++
[3.3] 言語:C
二分探索木の高さを調べる実験とその結果
提出期限:7月28日 12時まで
0886デフォルトの名無しさん
2012/07/26(木) 18:46:14.750887デフォルトの名無しさん
2012/07/26(木) 19:02:53.92#include<stdlib.h>
#include<malloc.h>
#define NODE_NUM 10
#define RAND_SEED 0x1031000
typedef struct BST_Node {
int value;
struct BST_Node *left, *right;
} _BST_Node, *P_BST_Node;
void insert_v(P_BST_Node n, int v){
二分探索木の生育方法をここに書く
}
int main(void){
P_BST_Node T_root = (P_BST_Node)malloc(sizeof(_BST_Node));
T_root->left = T_root->right = NULL; T_root->value = 0;
srand(RAND_SEED);
for(int i = 0; i < NODE_NUM; i++){
insert_v(T_root, 10 * NODE_NUM * rand() / (double)RAND_MAX);
}
木の高さや木の形をここで表示
}
続きは >>888 さんどうぞ
0888デフォルトの名無しさん
2012/07/26(木) 19:06:57.120889デフォルトの名無しさん
2012/07/26(木) 19:07:51.470890デフォルトの名無しさん
2012/07/26(木) 19:09:04.840891デフォルトの名無しさん
2012/07/26(木) 19:31:46.470892デフォルトの名無しさん
2012/07/26(木) 19:33:13.54,r'^''=ァ-
, -、 , -''´_,,r ''"
_______.. 、、-ァr| i´_ ,r'_´__ _ _
 ̄¨``…=''|-─ヒ!--−… '' "゛´
il「~lii r亠、 |
''rへ,、 |・._ |
__.. 、、---‐─…! ├^ー‐_: =====━… , -| `´ |
 ̄  ̄ ̄  ̄二ニ! ̄ |`¨ ̄ _,. -1 |¨¨i | _
| 。 ⌒L、 _ , 、-_''´‐''" _,ゝ._| /7 / `l
| rz─=,ニ=-─===z二 ̄ _< _,. - ''" _」 = 「´ / .|
. | ( ' ̄//  ̄`l¨`i ``T'F ̄  ̄丶. -<´ l凹 | / |
| /´ ̄rュ`'ー┘ ° L0!_ r‐、 ` ''┴==-┴−-、__/ |
…==i=(_ o 。 ° ロ  ̄ ‐┴-⊥., -‐- 、 _≦'、_ |
|┘゙コド"−-、- - _ /F、-、 )イ ̄  ̄´
 ̄ (O  ̄ ̄"``ー- 二 _  ̄ __王ニ-‐ ´ ̄´
r !!、 ̄ ¨¨ ̄(.○゙
゙‐'-'
//Λ_Λ | |
| |( ´Д`)// <うるせぇ、オスプレイぶつけんぞ
\ |
0893デフォルトの名無しさん
2012/07/26(木) 19:34:45.65/ \
/ ─ ─ \
/ (●) (●) \
| (__人__) | <こいよオラ!!オラ!!
,.゙-‐- 、 `⌒´ ,/
┌、. / ヽ ー‐ <.
ヽ.X、- 、 ,ノi ハ
⊂>'">┐ヽノ〃 / ヘ
入 ´// ノ } ,..,.._',.-ァ
/ `ー''"´ ,' c〈〈〈っ<
/ __,,..ノ ,ノヽー'"ノ
{ ´ / ``¨´
/´¨`'''‐、._ ,'\
∨´ `ヽ、 ノ ゙ヽ
∨ ヽ _,,..-'" `ヽ
∨ 〈-=、.__ }
ヽ、 } ``7‐-. /
ヽ リ /′ ノ
/′ , { / /
{ ! ,ノ ,/′
! / / `‐-、
! ,/ ゙ー''' ー---'
', /
{ }
゙Y `ヽ、
゙ー--‐'
0894デフォルトの名無しさん
2012/07/26(木) 20:19:46.100895デフォルトの名無しさん
2012/07/26(木) 21:22:11.15多重継承由来のバグって、たとえばどんなの?
インターフェースの多重実装なんてザラだと思うんだけど。
0896デフォルトの名無しさん
2012/07/26(木) 21:39:24.16最後のconstってつけたらダメなの?
0897デフォルトの名無しさん
2012/07/26(木) 21:43:13.39バグ以前にコンパイルエラーで気づくだろうにな
0898デフォルトの名無しさん
2012/07/26(木) 21:46:11.67クラス定義内のメンバ関数宣言なら、いいよ。
0899デフォルトの名無しさん
2012/07/26(木) 21:55:00.51なんかねー、constつけるとエラーになる
0900デフォルトの名無しさん
2012/07/26(木) 21:57:55.420901デフォルトの名無しさん
2012/07/26(木) 22:02:07.68書き換えてないんだけどなぁ
まあいいや
constなんていらん
0902デフォルトの名無しさん
2012/07/26(木) 22:03:21.830903デフォルトの名無しさん
2012/07/26(木) 22:03:44.690904デフォルトの名無しさん
2012/07/26(木) 22:04:29.85相談に乗って欲しいならコードとエラーメッセージを出せ。
0905デフォルトの名無しさん
2012/07/26(木) 22:06:20.99どんな状況での話?
0906デフォルトの名無しさん
2012/07/26(木) 22:22:02.960907デフォルトの名無しさん
2012/07/26(木) 22:27:05.030908デフォルトの名無しさん
2012/07/26(木) 22:49:11.44「Microsoft Visual C++ 2010」を使っているんですが
デバッグ開始ボタンをしてHello worldを出力したら
ちゃんと表示されているかを確認する前にウィンドウが自動で閉じてしまいます
何か設定がおかしいのでしょうか
0909デフォルトの名無しさん
2012/07/26(木) 22:49:52.380910デフォルトの名無しさん
2012/07/26(木) 22:51:35.15最後にゲットチャーを書くといいよ
0911デフォルトの名無しさん
2012/07/26(木) 22:51:35.49ありがとうございます
0912デフォルトの名無しさん
2012/07/26(木) 22:54:50.250913デフォルトの名無しさん
2012/07/26(木) 22:55:31.67ソースコードの左端の灰色になってる所クリックすると赤くなる
0914デフォルトの名無しさん
2012/07/26(木) 22:56:32.110915デフォルトの名無しさん
2012/07/26(木) 22:58:25.580916デフォルトの名無しさん
2012/07/26(木) 23:00:46.45でもhelloworldのメッセージを見たいって話だからな
0917デフォルトの名無しさん
2012/07/26(木) 23:03:44.710918デフォルトの名無しさん
2012/07/26(木) 23:04:05.64それぐらいならパチスロやってれば余裕で見えるだろ
0919デフォルトの名無しさん
2012/07/27(金) 00:41:16.220920デフォルトの名無しさん
2012/07/27(金) 00:41:54.752chで質問する奴はジャグラーがペカった時に店員を呼んで目押しさせるのと同じ。
0921デフォルトの名無しさん
2012/07/27(金) 04:10:30.92Visual Studio 2010 Part19
http://toro.2ch.net/test/read.cgi/tech/1334052731/
0922デフォルトの名無しさん
2012/07/27(金) 09:44:13.82HelloWorldも捕獲出来るかも知れないぬ
0923デフォルトの名無しさん
2012/07/27(金) 16:59:06.102つのキーのうち片方で検索してリストを作るとか
そういうことができるようにしたい
0924デフォルトの名無しさん
2012/07/27(金) 17:07:15.260925デフォルトの名無しさん
2012/07/27(金) 17:11:42.80key1で検索した結果のイテレータって、どう書く?
0926デフォルトの名無しさん
2012/07/27(金) 18:54:07.65普通は文字列の配列を作るけど
mapみたいに
0927デフォルトの名無しさん
2012/07/27(金) 19:15:18.97主キーは?
0928デフォルトの名無しさん
2012/07/27(金) 19:27:42.710929デフォルトの名無しさん
2012/07/27(金) 22:29:50.500930デフォルトの名無しさん
2012/07/27(金) 22:31:46.32なんでそんなふうに思うの?「ユーティリティクラス」って言われてもよくわからんし。
0931デフォルトの名無しさん
2012/07/27(金) 22:34:20.48用途によるだろうけど、
複数作ってマズイものはシングルトンにすればいいし、
そうでないものは過度の制限はしなくてもいいんじゃね?
用途はコメントに書いてもらえば多少マシかと・・・。
0932デフォルトの名無しさん
2012/07/27(金) 22:38:39.080933デフォルトの名無しさん
2012/07/27(金) 22:42:29.290934デフォルトの名無しさん
2012/07/27(金) 22:50:53.930935デフォルトの名無しさん
2012/07/27(金) 22:51:04.31Java生まれの用語かと思ったら、Java(Sun)は
コンテナーや簡単なアルゴリズムを提供するクラス群を
ユーティリティと呼んでた。
多分コボラーがクラスで関数を書くために考えた言い訳じゃね?
0936デフォルトの名無しさん
2012/07/27(金) 22:59:33.16OoWeenies(オブジェクト狂)から言わせればアンチパターンだとよ
http://c2.com/cgi/wiki?UtilityClasses
0937デフォルトの名無しさん
2012/07/27(金) 23:06:22.48作らない設計の方がいいと思う
0938デフォルトの名無しさん
2012/07/27(金) 23:08:00.390939デフォルトの名無しさん
2012/07/27(金) 23:08:50.62中身が不定なI/O用や、中身が変わらないものだとだいぶ違うだろ。
関数の呼び出し先と、呼び出し元の相互で理解が必要な単なるグローバル変数は危険だが、
stdinとか、stdoutは、まず問題にならないからね。
個人的には、Singleton使うぐらいならMono State使うべきだと思う。
SingletonのInstance関数はC++の初期化順序云々の問題を
解決するためのものだけど実際初期化順で困る事ないし。
0940デフォルトの名無しさん
2012/07/27(金) 23:08:54.310941デフォルトの名無しさん
2012/07/27(金) 23:09:39.760942デフォルトの名無しさん
2012/07/27(金) 23:11:18.17ならはじめっからクラス公開すんじゃねーよ、と。
0943デフォルトの名無しさん
2012/07/27(金) 23:21:38.47欠陥言語の尻拭いだから・・・
0944929
2012/07/28(土) 00:16:24.40ファクトリメソッドが必要だったんだけど、そうか、普通の関数でいいのか
すっきりした
0945デフォルトの名無しさん
2012/07/28(土) 00:21:37.820946デフォルトの名無しさん
2012/07/28(土) 01:06:49.310947デフォルトの名無しさん
2012/07/28(土) 01:08:21.28メモリ効率がいいよ!
0948デフォルトの名無しさん
2012/07/28(土) 01:20:10.900949デフォルトの名無しさん
2012/07/28(土) 02:07:36.58C++あんがい使いこなしてるやついないのはマジで驚くわー。
0950デフォルトの名無しさん
2012/07/28(土) 02:23:41.88shared_ptr使って、インスタンス生成クラスがインスタンス管理を放棄するようになると、
可読性が落ちない?
集中管理前提で、安全なポインタを分けるってイメージならまだいいんだが。
といいつつ、boostを使ってると使わざるを得ないケースが多々ある・・
0951デフォルトの名無しさん
2012/07/28(土) 02:32:24.09うちはもう生ポインタ使用禁止になったよ
0952デフォルトの名無しさん
2012/07/28(土) 02:43:46.490953デフォルトの名無しさん
2012/07/28(土) 10:28:00.450954デフォルトの名無しさん
2012/07/28(土) 10:32:27.440955デフォルトの名無しさん
2012/07/28(土) 10:38:26.99そこは、もう働くしかないな・・・だろw
0956デフォルトの名無しさん
2012/07/28(土) 13:09:10.67コマンドプロンプトでtreeって入力した時に表示されるフォルダ構成の図が理想です。
お願いします。ご教示ください。
0957デフォルトの名無しさん
2012/07/28(土) 13:19:23.81勢いがある初心者スレの方が丁寧に教えてくれるぞ
0958デフォルトの名無しさん
2012/07/28(土) 13:32:57.06入れ子をデーター構造で表現しろよ
0959デフォルトの名無しさん
2012/07/28(土) 13:59:45.85再帰で書くといいよ
0960デフォルトの名無しさん
2012/07/28(土) 14:12:54.18日本語にすると再起不能
0961デフォルトの名無しさん
2012/07/28(土) 14:13:59.370962デフォルトの名無しさん
2012/07/28(土) 14:24:24.29たしかにスタックオーバーフローは
再帰不能になるな
0963956
2012/07/28(土) 16:13:18.75とても綺麗なソースで自分でも感動。
0964デフォルトの名無しさん
2012/07/28(土) 16:44:08.32返ってくるけど、it++したら次のはマッチするの?
0965デフォルトの名無しさん
2012/07/28(土) 16:50:50.890966デフォルトの名無しさん
2012/07/28(土) 17:04:36.80釣りですよね
0967デフォルトの名無しさん
2012/07/28(土) 17:11:02.37基底で工夫できることはありますか?
0968デフォルトの名無しさん
2012/07/28(土) 17:16:12.260969デフォルトの名無しさん
2012/07/28(土) 17:30:41.05基底のすべてで共通する処理は関数に書き出しておいてすべてのコンストラクタに呼ばせる。とか??
万能解ってあるんかな??
0970デフォルトの名無しさん
2012/07/28(土) 17:35:02.4030秒しらべてみたが、
お前が望んでるのはequal_rangeじゃね?
0971デフォルトの名無しさん
2012/07/28(土) 17:38:07.92遅レスになるけど実際書いてみた
何かすっきりしないな
http://ideone.com/J4KF0
0972967
2012/07/28(土) 18:03:11.75すみませんコンストラクタじゃなくて普通の関数の場合の質問でした。
0973デフォルトの名無しさん
2012/07/28(土) 19:54:02.510974デフォルトの名無しさん
2012/07/28(土) 20:13:25.99>>114
0976デフォルトの名無しさん
2012/07/28(土) 20:39:31.30なんだっけか
0977デフォルトの名無しさん
2012/07/28(土) 21:00:03.48gcc拡張だろ
0978デフォルトの名無しさん
2012/07/28(土) 21:11:36.93ttp://wikiwiki.jp/redstrange/?%C4%EA%B5%C1%BA%D1%A4%DF%A5%DE%A5%AF%A5%ED
0979デフォルトの名無しさん
2012/07/28(土) 21:11:40.470980デフォルトの名無しさん
2012/07/28(土) 23:02:33.68void* から インターフェースを継承していたら、
インターフェイスのf()を呼び出したいんだけど、どうすればいいでしょうか?
TYPE_Aを作るしかないのかな
0981デフォルトの名無しさん
2012/07/28(土) 23:04:50.73すいません。http抜けてた
0982デフォルトの名無しさん
2012/07/28(土) 23:08:11.33クラス名がないよ
0983デフォルトの名無しさん
2012/07/28(土) 23:08:22.630984デフォルトの名無しさん
2012/07/28(土) 23:12:06.95ttp://stackoverflow.com/questions/1666802/class-macro-in-c
定義済みマクロはC由来だからC++では無いような気がする。
0985デフォルトの名無しさん
2012/07/28(土) 23:30:47.25typeidはデマングル面倒くさいじゃないですかー! やだー!
0986デフォルトの名無しさん
2012/07/29(日) 12:58:10.81ってどこかにある?
なんか構文解析とセットになってるのしか見当たらない
0987デフォルトの名無しさん
2012/07/29(日) 13:29:45.360988デフォルトの名無しさん
2012/07/29(日) 14:41:40.42今見てるのを削除するってのはよく見かけるけど
0989デフォルトの名無しさん
2012/07/29(日) 14:55:03.45削除はすぐにしないで削除フラグをつけるだけで
追加分はtempコンテナに貯めて置いて
走査が終わったら一気に削除追加するとかね
0990デフォルトの名無しさん
2012/07/29(日) 18:59:10.56項目だけコピーすりゃいいだろ。
線形探索で削除していくなら速度面じゃコストは無い。
むしろ早い場合もある位だ(特にベクター)
よっぽどメモリーを消費するような場合じゃなきゃ
別コンテナでいい。
0991デフォルトの名無しさん
2012/07/29(日) 19:14:58.86次スレよろ
0992デフォルトの名無しさん
2012/07/29(日) 19:16:44.790993デフォルトの名無しさん
2012/07/29(日) 19:17:42.310994デフォルトの名無しさん
2012/07/29(日) 19:18:30.630995デフォルトの名無しさん
2012/07/29(日) 19:26:07.99もう1つの別な「継承」がテンプレート
0996デフォルトの名無しさん
2012/07/29(日) 19:32:00.74日本語でいいよ
0997デフォルトの名無しさん
2012/07/29(日) 19:32:19.34ttp://ideone.com/eySV5
0998デフォルトの名無しさん
2012/07/29(日) 19:50:37.68ありがとう
何も問題なかった
0999デフォルトの名無しさん
2012/07/29(日) 19:57:30.811000デフォルトの名無しさん
2012/07/29(日) 20:00:36.24javaやlinuxは手間がかかる 一人でやるには手間がかかりすぎる 手間がかからないで一人で開発できて
人の多いところで直接販売できる仕組みが提供されているメーカ製言語だけやる ずばりiphone またはWindow 8 Metro App Store C#
やるならメーカー製の言語 洗練された仕様 脆弱性が少なく 開発ソフトが優れ 課金ライブラリ アップデートライブラリが提供されていて 情報、書籍が多く開発しやすい
奴隷になりたければオープン系をやればいい 時間がかかり 人は多く 仕事の取り合い 足の引っ張り合い 脆弱性が多く 互換性がなく 癖があり 大規模開発中心
詳細設計しかやれない体になって年取ってぽいだ 独立もできない 手間のかかりすぎる仕様だから
派遣屋 IT経営者はその方が喜ぶ 大規模分割開発では使い捨てても独立はできまい 代わりはいくらでもいる 嫌なら辞めろ
若い派遣営業は舐めた態度をとってくる ひどいピンハネ
オープン言語、日本独自開発の言語・フレームワーク ガラパコ携帯 javascript html5 android java linux python rubyやnode.jsとかやめとけ
メディアに金を払ってステマ宣伝してくるが釣られて手を出しても情報は少なく手間がかかり スパゲッティコード 未完成 デスマに陥る
コンパイルできないからパクられ 直接売る場所がないから企業に買い叩かれ金にならない 生きていけない奴隷仕様だ
ここから抜け出すにはiPhone一択 またはWindow 8 Metro App Store(未確) C#
Objective-CやC#を覚えるとサーバーサイドからクライアントサイドまでカバーでき人の多い場所でソフトを売る権利を得られる
仕事や趣味でこれらの言語をやっておけば派遣切りされても会社辞めることになってもソフトを売って生きていける それはセーフティーネットになる
WEBサーバーIIS Win2008ServerVPS SqlServer Oracle MySql 言語はマーケットで売れるメーカー製のみ C#は自分用業務支援ツールとして使える
例えばPHPでWEBアプリを作っていて管理者画面はC#(EXEアプリ)で作るとかなり早く作れる(Smartyなんか使うよりもかなり早くだ)
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。