乙乙〜
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
>>1 乙
質問です std::regex ex("[abc]{2,4}.*"); auto result = std::regex_match("bbbXXXX", ex); ここで "bbb"を取り出したいのですが どげんしたらよかですか?
C++でなく正規表現だろ
[abc]{2,4}を()で囲んでmatch_resultsを用意してそれを受けるregex_matchを使ってその結果から取り出せ
7 :
4 :2013/06/16(日) 03:02:06.42
それは取り出すじゃなくて取り除くって言うと思うんだが、 括る場所変えるだけでいいし正規表現勉強してこいボケ
ideoneのパターンのキャプチャ動作がおかしくない? . なのに2文字返ってくるし
>>9 Visual C++だと (.) は X になるね
gccのregexは公式には未実装(扱い)だからしかたない
boostの正規表現とは仕様が違うの?
>>13 デフォルト動作が違うみたい。モードフラグがいくつかあったべな。
あと、VC++10でバグっぽいのが見つかったので、報告済み。
boost.regexと設計と使い方は同じ。細かい違いはある
boostをそのまま持ってくればいいんじゃないの?と思ったが 若干違いがあるのね でも未実装扱いってことは、 boostさん、gccにそのまま使わせてあげてないってこと?
質問です heapクラスを作れと言われたのですが、 ヒープクラスというと、一般的にどんなものを用意すればよいでしょうか?
18 :
デフォルトの名無しさん :2013/06/16(日) 15:55:21.43
要件が「クラス名がheapであること」だけなら class heap { }; としか作りようがない つーか要求にないことを勝手にやってはいけない 一般的にというならstd::make_heapあたりを参考にすべきだろうな
ヒープってのが本当にデータ構造としてのヒープなら そういうのでいいけど ヒープメモリを確保するクラスという意味なら・・・まあそんな事は無いか
20 :
デフォルトの名無しさん :2013/06/16(日) 16:09:02.18
>>19 確かにheapがデータ構造のことなのかヒープ領域なのかという事にも悩みました
ただ1つ書き忘れていたことがあって、速度を優先した〜 とあったのと、
一応色々ネットで調べた結果、mallocとかfreeとかを使って、ヒープ領域を確保するクラスのことなのかなぁ
という予測はしました。
ただそれでもハッキリとしなかったので、
heapクラスといえばこういうものだよ というものがあればと思い質問させてもらいました。
どういう流れで出された課題なのかが問題だ
普通はヒープ構造を配列で実装する事を指すんじゃないかなあ
仕様が不明瞭だったら責任者に問い合わせてボコボコにしてやれ それが社会に出てから必要な能力になる
26 :
17 :2013/06/16(日) 16:48:06.62
いろいろ意見、情報ありがとうございます どうやらデータ構造派の方が多そうですね・・・ とりあえずそちらで作成して、 やんわりと仕様がよくわからなかったという文句とともに提出しようかと思います
C++のnewは「フリーストア」から メモリを確保します。 ヒープメモリ何それ。
もし仕事ならちゃんと確認した方がいいと思うけど 学校の宿題ならデータ構造だろうけど、会社だとメモリの可能性もある
newの実装は大体mallocだぁね
30 :
デフォルトの名無しさん :2013/06/16(日) 17:20:22.88
ヒープクラス = 二分木クラス
newまたはNewは、C++を始めとしたオブジェクト指向プログラミング言語において、インスタンスを作成する演算子である。多くの場合、ヒープ領域からの動的メモリ確保(動的記憶域確保)を伴う。 って書いてあった
C++ の規格ではヒープという言葉で表現されてなくて フリーストアって書いてあるんだよね データ構造のヒープと紛らわしかったからかは知らないけど
高速化のためにメモリプールとか使う処理系が多くなったのかな
34 :
17 :2013/06/16(日) 19:47:28.95
C++でやろうとおもったので、ここで質問させてもらったのですが、 言語指定はないので言語特有の呼び方とかはあまり関係ないと思います 説明不足でしたすいません
35 :
デフォルトの名無しさん :2013/06/16(日) 19:58:15.60
make_heapつったろ 早く調べろ!
make_heapはもとの要求から外れる
>>18 の言うように
class ヒープ final {};
これが正解
37 :
17 :2013/06/16(日) 22:45:02.22
何度もすいません
あれから色々なところを調べました。
自分の持っている書籍もみたところ、
>>23 >>24 のように二分木を配列で実装することのような気がします
とはいえ確実ではないので
class Heap{};とかくしかないのでしょうが
やはり何かは書いておきたい
ということで、
>>23 のスレを参考にしたいと思います
何度も付き合っていただきありがとうございます
class Heep { // <algorithm>のstd::make_heapで何かする予定 }; これでおk
Cのaligned_allocに相当する関数はC++にありますか?
ないね C11対応コンパイラならC++でも使えるんじゃないの?とは思うが、知らん
>>40 素早い回答ありがとうございます
#include <stdlib.h>
でイケました
何で使えないかもと思ったんだろうか。
43 :
デフォルトの名無しさん :2013/06/18(火) 23:25:42.26
>>43 ・「void main()」
・ローマ字変数名
・定数部分を開業せず横にベタ書き
・構文内にスペースで隙間を開けず詰め詰め
・滅茶苦茶なインデント
俺は読むのを諦めた
45 :
デフォルトの名無しさん :2013/06/18(火) 23:53:12.63
>>45 エクセルのシートをワードに貼り込んで送り付けてやりたいw
提出方法について泣くまで問い詰めたい。
48 :
デフォルトの名無しさん :2013/06/19(水) 00:19:33.09
何で学校の先生にきかないんだろうな 学費にはそういう費用も含まれてるのに 親が払った学費をドブに捨てるのが趣味なのかな
>>45 >講義でやったのをいじっただけ
百歩譲ってそうだとしても、変数名ローマ字云々は一般には糞扱いだぜ?
(特に「void main()」は厳密には文法違反だし)
と言うか、
仮にデータ部分を外部ファイルに分けて用意することが許されなかったとしても、
仮にmain以外の関数を定義することが許されなかったとしても、
仮に構造体や長い英字変数名(キャメル記法)を使うことが許されなかったとしても、
もうちょい分かりやすく書けなかったのかと言いたい
>>45 >44に付け加えて、
・CなのかC++なのかはっきりしろ。
・変数宣言は、局在化したいのか関数の先頭に分離したいのかはっきりしろ。
出題者の色々アレな点を鑑みると、void meinでなくて良かったと考えるべきだろうw
おまいら意地悪だな デジカメでこれだけクリアな画像が撮れる奴がいるか? もっと驚嘆してやれよ
>>51 C++スレでC++の文法に従ったプログラムを
見せているのに、Cなのかはっきりしろとは
これ如何に
>>55 C++の流儀に従うなら従う、必要機能以外C互換機能で済ますなら済ます、どっちかにしろってことだろう。
でも任意箇所での変数宣言はC99とかならCでもできるし(-Dprintf_s=printfつければtccでも通る)、
printf_sに目を瞑ればた只々下手クソなCコードととしてコンパイル通るといえば通る。
(手元にあるVC2010のCL /TCでは非ブロック先頭変数宣言でコケるので違うかもだが)
printf_s使ってる辺り(聞きかじりの)新機能使ってCのコード書いてるつもりなのか、
C++の講義だけどCのAPIしか叩かないちょっとアレな方針なのか、どっちだろうな。
scanf/printfは便利だけど、C++の講義なら早々に済ませてstd::cout/std::cin使うべきだろう。
バカほど長文
>>56 の要約:
「C++というなら素直にiostream使っとけ」
iostreamは糞だから別にmustじゃない
60 :
デフォルトの名無しさん :2013/06/19(水) 08:38:37.21
iostreamを駆逐しうるライブラリは?
ストリームデバイスの抽象化としてiostreamの設計は妥当で悪くない ブロックデバイスに対してもストリームデバイス用に設計されたインターフェイスを使わなければならないことが問題だろ
cout << a << b << c これはいいけど cin >> a >> b >> c これはおかしい 論理性のカケラも無い
質問させてください。 #ifdef FOO int var; #endif だと宣言のたびに3行も使ってしまって見づらいので、 初めに #if 1 # define FOO /##/ #else # define FOO #endif として、以降 FOO int var; と1行で書こうと思いました。 vc++ではこのやり方でうまくいくのですが、 xcodeでは Pasting formed'//', an invalid preprocessing token というエラーになってしまいます。 コメントアウトのオンオフを1行でこなせる、環境依存でないマクロというのはないのでしょうか?
まさかと思うが、ObjectiveCじゃないだろうな。
いえ、開発環境としてxcodeをつかってはいますが、c++のコードです。
#define DEF_VAR(type,name) type name; DEF_VAR(int, var) こういうのは見かけるけど
>>63 それ、gccでもエラーになる
これでいいんじゃね?
テンプレートとかでstatement中にカンマが入るとおかしくなるんで
そういう場合は事前にtypedefしておく
#if 1
#define FOO_CASE(statsment)
#else
#define FOO_CASE(statement) statement
#endif
FOO_CASE( int var = 6 );
そこは #define UNKO if ( true ) ; else じゃねーの
71 :
63 :2013/06/19(水) 14:28:11.36
可読性をあげることが目的なのでタイプ修飾子と同じような書式が理想だったのですが、 DEF_VAR(int, var) やFOO_CASE(statement) statement のように括弧を使うしかなさそうですね。 #ifdefマクロを使うよりは読みやすそうですし、これで試してみます。 ありがとうございました。
そこは FUN in FUN だろ わかってねーな
if-else を使う方法は完全に消えるわけではないので コンパイル対象になるから注意が必要 #ifdef を使った方が エディタが色付けしてくれるので 読みやすい気もする
一番のウンココードは #ifdef FOO int var; #endif 環境依存のコードは局所化しろよ。
分りやすく猿にも分かるコードを書くのが職業プログラマー 難解だけど高度な内容を含んでいるのが個人プログラマー
という、コード書けない奴の思い込みでした。
>>77 猿にも分かる--->単純アルゴリズム
いきなり、矛盾だな。
82 :
デフォルトの名無しさん :2013/06/20(木) 14:17:28.27
カスしかいないスレ
職人かと思ったがよくみたら職業マか 分りやすく猿にも分かるコードを書けるのは才能だぞ
84 :
デフォルトの名無しさん :2013/06/20(木) 14:56:35.45
どこが荒らしなんだか
本当のプロフェッショナルは仕様書を書くのが楽でテストも自動化しやすいものを作る つまり純粋関数型だけが真のプロフェッショナルに許された技術なのだ
キチガイ現る
真実をズバリと突かれて平静を保ちたいがために声を荒げて反論したくなる気持ちもわかる しかし君が何と言おうと関数型が世界の選択である事実には変わりないのだ
90 :
デフォルトの名無しさん :2013/06/20(木) 19:38:50.52
シロナガスクジラにもでかすぎる釣り針で何が釣りたいんだ?
おろかなる旧人類よ 君たちが関数型の真価に気付き 種としての夜明けを迎えるのは何年後だろうか?
ここは、「ボクのかんがえたさいきょうのぷろへっしょなる」を開陳する場だぜ。
消費するスタックサイズ計算出来ない奴はお呼びじゃない
96 :
デフォルトの名無しさん :2013/06/20(木) 21:07:06.28
>>94 Bjarne Stroustrup. The C++ Programming Language Fourth Edition
ハゲの妄想本は糞 絶対読むな
98 :
デフォルトの名無しさん :2013/06/20(木) 21:23:04.31
いや、4th は買いだよ 立ち読みでいいから確認してみな あれ以上に解りやすい説明を、おまえできるか?
VC++6.0 なのに C++ の本をすすめるのは間違い
きっとVC6が何かわかってないんだよ
103 :
デフォルトの名無しさん :2013/06/20(木) 22:54:06.68
>>101 > その二冊はMFCの解説書でしょ…
そうですね・・・。よくみてませんでした。
IDEの使い方も載ってそうだし、中古安かったので買ってみました。
>>103 >このシリーズの1巻がおすすめだ。
1巻も買ってみます。
>>Windowsの仕組みの勉強のほうが先かも
うーん。一応VB.netでWindowsアプリの開発経験はあるんですが
Windows APIとかよくわからないのが多いんですよね。
参考にします。
105 :
103 :2013/06/20(木) 23:19:17.54
MFC使わないんならC++も必要ない Win32 のウインドウプロシージャ関連をぐぐればOK …Cはわかってるんやろか
>>104 MFC抜きなら(GUIの場合だが)スケルトンの学習は必須。
アプリの開始位置のWinMain関数とウィンドウクラスの登録(クラスを登録する事で
登録した時の情報に従ったウィンドウのパターンが出来る。それを呼び出してウィンドウを作る)
そして最も手を加えるWindowProc(ウィンドウプロシージャ)コールバックとして登録することで
システムから呼び出される。キーが押された、マウスがウィンドウを通過した、マウスボタンが
押された、などの情報が全て送られてくる。それを条件によってさばいていくのが
MFC抜きのC/C++でのWindowsアプリの形。
まず、コンソールアプリなのか サービスアプリなのかCOMライブラリなのか Win32を使用したGUIアプリなのか プログラムの形態を確認しろよ Oracle Pro*Cのバッチプログラムだったら WindowProcの知識なんて殆ど役に立たないぞ
スタンドアロンのGUIアプリ一択だろ エスパー能力が足らんな
floatなどをクラス内で定数宣言をするにはどうすればいいでしょうか static const int と同じようなものを作りたいと考えています
>>111 インライン関数使えや
Perlのように
>>111 諦めてクラスの外に書く
namespace unko {
const float pi = 3;
}
>>112 public:
クラス名() : m_f(0.0f){}
private:
const float m_f;
ということでしょうか。Perlを触ったことがないのでアレです
>>113 C++の設計思想と言うか、考え的に確かクラス内定数は作らせたくないんですよね
諦めてクラス外に書く方が一番ですかね・・・
JAVAで言うpublic static final float 〜〜 みたいなことができたらなぁと思ったのですが・・・
クラス内に定数を置きたい理由って何だろう
>>115 使うかどうかは別として、できるのかなと気になったので・・・
117 :
デフォルトの名無しさん :2013/06/22(土) 04:21:40.13
C++11
円周率 = 3
>>114 単純に、
classs Foo {
public:
float e() const { return 2.718281828459045f; }
void Print() { std::cout << e() << std::endl; }
};
みたいな、
Perlと違ってあくまでe()であってeとは書けないが、
- 定数の定義と宣言をクラス内で一挙にやれる
- 実行コストは#defineやクラス外でやるconst float e = 〜;と同等の低さが気体できる
という意味で、>111な要求をおそらく満たすから無問題、みたいな
どうしても構文にこだわりたいのなら、namespaceを使っても一応同等のことができそうな、 つまり、 namespace foo { const float e = 2.182.18459045f; void print { std::cout << e() << std::endl; } } みたいな、 テンプレートを駆使すればもっと奇天烈奇怪で驚天動地な答えもあるかも試練が知らん
122 :
121 :2013/06/22(土) 08:30:55.49
すまん 誤: void print { std::cout << e() << std::endl; } 正: void print { std::cout << e << std::endl; }
結論、C++はうんこ
>>120 なるほど、そのようなやり方が・・・
ありがとうございます!
完璧な言語など無いよ しいて言えばC#だろう
126 :
デフォルトの名無しさん :2013/06/22(土) 15:56:03.63
>>126 ありがとうございます、じゃねーよ( ゚д゚)、ペッ
いえいえ
130 :
デフォルトの名無しさん :2013/06/23(日) 14:46:06.94
お先にどうぞ
ヘッダに静的変数を定義するにはどうしたらいいですか? class unko { public: . static mutex lock1; } とすると定義がないと怒られるので class unko { public: . static mutex lock1; } mutex unko::lock1; としたところ多重定義と怒られました class unko { public: . mutex& get_lock() { static mutex u; return u; } } とすると一応できるのですが、カッコ悪いのと、実行のシングルスレッドが保証できないのでできれば避けたいです
よくわからんがクライアントプログラムがインクルードする度に定義されたいの?
変数名unkoとかやめーい
ヘッダはstatic変数は宣言で 定義はcppが常識
UNCHI(United China)、UNKO(United Korea)はもうすぐ無断で使用不可になるから気を付けるように。
ホゲもクソも変わらん。 クソは確信的だろうけど、 むしろホゲを堂々と使う人の方が ヤバいと思う。特にウニクサー。
最近は、MooとかMew使うことにしてる
>>137 United Koreaって北朝鮮のヤバさと
韓国の酷さが合体するの?
ネトウヨに一々反応するな
そういう事にしとけば楽だよねー。
143 :
デフォルトの名無しさん :2013/06/24(月) 10:06:19.25
すみません、相談いいですか? 二次元配列のvectorを管理するクラスでエラーが出て困っております。 classをコンテナとしたvectorの二次元配列を宣言をするには vector<vector<class型名(仮にAとします)*> >配列名(仮にBとします) で大丈夫ですよね?そして二次元配列の行と列の長さを初期化のところで 確定させたいのでresizeを用いて行と列の長さを決定、 そのあと二重ループを用いて、二次元配列のすべての要素にAを格納させる。 これらのことをマネージャclass(仮名)でやっているのですがエラーが出てしまいます。 開発環境はvisualstudioなのですが、エラーはerror LNK2001: 外部シンボル云々というもので (もちろん、セットでerror LNK1120: 外部参照 1 が未解決ですも続いてます)、 どうやら二次元配列の中にBが格納されておらず、 そこを読む処理が「無いぞ」とエラーを吐いてるみたいです。 <マネージャclassにて> 二次元配列の宣言 vector<vector<A*> >B; 初期化の関数内 void マネージャCLASS::Initialize(int m_line,int m_col){ B.resize(m_line); for(int i = 0; i<m_line; i++){ B[i].resize(m_col);} for(int line=0; line<m_line; line++) { for(int col=0; col<m_col; col++) { A* add = new A(); add->Initialize(); B[line][col] = add;}} としています。これらに問題ありますか? また、このような処理を書く場合に気を付ける箇所はありますか? コンテナに使っているAクラスには変数と関数しか書いてません。
>>143 エラーメッセージを一字一句飛ばさずに読め、それでわからなければ、同じエラーの出るコードと
エラーメッセージを一字一句飛ばさずに貼れ。
それとは別にそのコード、 new で入れた A の delete はどうなってるの?
resize(), new, Initialize() など例外の飛びそうな操作が入り混じっていながら
直接メンバ変数 B をいじくってるんで、たぶん例外安全性の問題もある。
145 :
デフォルトの名無しさん :2013/06/24(月) 10:36:47.00
>>144 レスありがとうございます。
エラーの全文です(長すぎる行と規制が入ったので改行してます
(コンテナCLASSを型名とした二次元配列でそれはマネージャclassで宣言、初期化してます)
1>その配列を読もうとしてるクラス名.obj : error LNK2001: 外部シンボル ""public: static class std::vec
tor<class std::vector<class コンテナCLASS *,class std::allocator<class コンテナCLASS *> >,class std:
:allocator<class std::vector<class コンテナCLASS *,class std::allocator<class コンテナCLASS *> > > > マネ
ージャCLASS::配列名" (?配列名@コンテナCLASS@@2V?$vector@V?$vector@PAVコンテナCLASS@@V?$allocator@PAVコンテ
ナCLASS@@@std@@@std@@V?$allocator@V?$vector@PAVコンテナCLASS@@V?$allocator@PAVコンテナCLASS@@@std@@@std@@@2@@std@@A)" は未解決です。
>new で入れた A の delete はどうなってるの?
格納後のAのdeleteですか?Aの中でdelete作ってますが。。。
>>145 コードはどうした?
"コンテナCLASS" とか言ってるのは要素型のことなんだろうけど、一般的に
コンテナクラスと言えば vector などモノを入れるクラスのことを指すんで、その呼び名は
やめたほうがいいよ。
そのエラーメッセージは "public: static ... マネージャCLASS::配列名" の定義が無いと
言っている。
148 :
デフォルトの名無しさん :2013/06/24(月) 12:15:23.21
>>146 >"public: static ... マネージャCLASS::配列名" の定義が無いと言っている。
どういうことでしょう??
>>143 にて書いてるようにマネージャCLASSにて、vector<vector<A*> >B;と宣言はしております。
あとコードを張り付けるにもこの掲示板は行数規制がキツイみたいなので
連投せざるを得ません。例えば、確認したい箇所を限定して頂けないでしょうか?
エラーはどうやら、初期化後、別の場所からゲッターなどで要素の中身を確認しようとしたら吐くようです。
149 :
デフォルトの名無しさん :2013/06/24(月) 12:17:31.41
>二次元配列の宣言 vector<vector<A*> >B; 本当にそう宣言してるか?static付けてないか?
151 :
デフォルトの名無しさん :2013/06/24(月) 12:44:47.38
>>150 はい、staticつけてます。
よくわかりましたね??
もしかしてstaticつけてたらダメなんでしょうか?
staticメンバ変数と非staticなメンバ変数の違いはわかってるか? わかってて使ってるなら staticメンバ変数はクラス定義の中に書いてもそれは宣言だけで定義したことにならない クラス定義の外(かつプログラム全体のどこか一箇所だけ)で vector<vector<A*> > マネージャCLASS::B; として実体を定義しなければならない
153 :
デフォルトの名無しさん :2013/06/24(月) 13:16:40.36
>>152 ご指摘通り、配列を実体化してませんでした。。。忘れてました。
どうもありがとうございます!!
tdmつかってます。cstdintをincludeしてもint64_tが使えないのはなぜですか? つかえるようにしかた教えてください。
>>154 tdmつかってないけど、std::int64_tなオチじゃね?
じゃない。
#include <stdint.h> ならstd::付けなくても大丈夫じゃね?
cstdintのヘッダーみてるとマクロで使えないようにしてあるみたいっす。
-std=c++0xオプションが要るとか 手持ちのg++ 4.4.3だとこのオプション付けないとワーニング表示するよ
オプションはつけてマッスルよ。
int64_tが無いKUSOコンパイラなんだよきっと 別に規格違反ではない
>>161 あんさんの使っているコンパイラーは何にょ?
c++0xオプションつけてるのにstd::int64_tが マクロで抑制されているとなると、 Windowsで32ビットバイナリの時は使えないとか?
えっと、-m64でしたっけ・・・ つけてマンスリーよ
>>164 お前、どうせ後で
「みなさんがいつ正解に辿り着くか試していました。バカばっかですね」
とか言うつもりだろ?
馬鹿ばっかですね。
>>154 馬鹿には使えないんです。諦めて下さい。
最近C++の変数は初期化されるって言う人よく見るんだけど仕様何か変わったりしたの? プリミティブ型は明示的にコンストラクタ呼ばないと初期化されないと思ってるんだけど あとSTLで明示的にコンストラクタを呼ぶ呼ばないって規約あるの?
どこでそんなアホな人間を見かけるんだ? お前は毎日家畜小屋でもうろついているのか?
STLってなんですか?
スゲー テクニカルな ロコモーション
173 :
154 :2013/06/26(水) 10:05:42.59
stdint.hをincludeしたらint64_tが使えました。 cstdintではstd::をつけても使えません。 cstdintではなぜつかえないのですか? 教えてください。
>>169 VC++のデバッグバージョンの話じゃないか?
>>169 int k;不定
int k();関数宣言
int k{};ゼロ
int k = {};ゼロ
×初期化される ○初期化できる
>>169 そういう奴はマルチユーザーOSではユーザーモードへからカーネルモードへのメモリ確保要求は0埋めして返すという暗黙のルールを知らずに勘違いした観測結果を見てる
>>178 あ、カーネルの暗黙のルールとかどうでもいいです
ここはOSスレじゃなくて言語スレなんで
>>179 「言語仕様的に考えて自動初期化なわけねーだろ馬鹿」
ってことだろ察しろよ
181 :
デフォルトの名無しさん :2013/06/26(水) 22:08:02.81
言語仕様的に考えて自動初期化なわけねーだろ馬鹿
じゃなんでvectorはゼロ初期化なん?
コンストラクタがよばれるからだろアホ
C++03はresize関数が初期値を必ず要求するから デフォルト引数でゼロ初期化される C++11はゼロ初期化されない
初期化のされ方が違うんじゃなかったっけ 03・・・デフォルトコンストラクタを増えた個数回呼び出す 11・・・デフォルトコンストラクタを1回呼び出し、それをコピーコンストラクタで広げる ような感じだったような
相変わらずきもい言語だな
>>188 違う
初期値指定付きのresizeは03も11も変わらない
03には本当の意味での初期値指定なしのresizeは存在せず、
一見初期値指定なしに見えるものはデフォルト引数が使われているだけ
11には本当に初期値指定指定なしのresizeが存在する
この場合は増えた要素をアロケータで初期化するのだけども
POD型では初期化されないようになっている
(もちろん初期化するようなアロケータを指定すれば初期化されるようにもできるが)
>>192 いくらなんでもそんな危険な変更が入るわけが無い。
だよね 初期値指定なしのシグニチャのがPODをゼロ初期化しなかったら互換性ぶちこわしだもんね
要するに、旧仕様だとuninitialized_fillを使わなきゃいけなかったのが PODの場合memsetが使えるようになったというだけだろ
コンストラクトごとに値が変わりコピーでは値が変化しないようなクラスでは互換性のない破壊的変更だったけどね
本当だ、ゼロ初期化されたわ あれ、昔試した時はそうならなかったような…… 気のせいか
クラスのインスタンスを作る時はスタックに置かず、常にnew/deleteしてるコードを見たんですが、 なんか理由があるんでしょうか。
Java教かなにかに入ってるんじゃないですかね
例外とか気にしないのかなと思う
スマポで解決
>>196 C++03でも値初期化されたPODによるuninitialized_fill()をmemset()に最適化することは可能だよ。
教えてください。 std:string str; strに8byte毎に16進数での追加の方法がわかりません たとえば、char str2[50]; str2 = 0x61 のように入れたいです。 str.append('0x61'); のようにすると、コンパイルエラーが発生します。 おねがいします。
>>204 > str2 = 0x61 のように入れたいです。
std::string 以前に、そんなことできないから。
やりたいことが何なのかさっぱり。
.append('\x61')
>>204 の超訳:
「charをstringに変換したいです><」
>>206 コンパイルエラーでできませんでした。
レスありがとうございました。
str.append(1,'\0');
str.append(1,0x61);
でコンパイル通りました。
お騒がせしました。
push_backのほうがいい気がするけど まあどうでもいいや
>>204 の「8byte毎に」は何だったんだ・・・?
8bit毎にの間違いでしょ
ああなるほど
169だけどこの話題出すといつも170-198みたいな流れになって誤解が多いのが分かる
未初期化のゼロを勘違いしやすいんだと思うけど
記憶が正しければ言語仕様は
>>176 でよくて、ライブラリに規約があるのかどうかが分からない
>>192 それって処理系の実装の話?仕様の話?
他にはpairのctorで初期化してるかどうかでmapの使い方変わるし
誰かおせーて
>>213 コンテナ要素は Allocator テンプレート引数に応じて allocator_traits<Allocator>::construct
で構築される。 23.2.1 [container.requirements.general] p3
allocator_traits<allocator_type>::construct は可能 (well-formed) であれば
Allocator::construct を使う。 20.6.8.2 [allocator.traits.members] p5
デフォルトの std::allocator<T> について construct<U, ...>(U* p, ...) は
::new((void *)p) U(...) と規定されている。 20.6.9.1 [allocator.members] p12
引数なしなら ::new((void *)p) U() となり、 POD でも値初期化=ゼロ初期化される。
5.3.4 [expr.new] p15, 8.5 [dcl.init] p10,p7,p5
<cstdint>をincludeしなくてもstd::int64_tがつかえるのはなぜですか?
>>215 他のヘッダからインクルードされてるからだろう
そういうのは可搬性ないよ
可搬性ないよの意味を教えてください。
cstdintを必ずインクルードしないと動かない処理系があっても文句は言えないという意味
くりくりー ありがたまきん
220 :
デフォルトの名無しさん :2013/06/27(木) 13:09:24.91
演算子のオーバーロードについて質問です。 class LongBit { private: //略 public: //略 LongBit operator*(unsigned a); //略 }; LongBit LongBit::operator*(unsigned a) { //略 } こう書くとエラーになります(略の部分はちゃんと書いてます)。どうすればよろしいでしょうか?
>>220 &がなくてconstがないので使い方に制限がある
>>214 なるほど、デフォルトのアロケータがコンストラクタ呼ぶのか
pairの話に戻るけど、これ自身はコンテナではないからそのメンバはアロケータを経由しないわけだけどそれらの初期化についてはどう?
手元の処理系では概ね初期化してるようだけど
pair::pair() : first(), second() {}
というのもPODなら簡単だけどPODを持つ非PODが面倒で、そのコンストラクタで初期化してやらないとPODのゼロ初期化を呼べなくなるよね
struct A { A(){} int a; } a = A();
// uninitialized a.a
何が言いたいかよくわからないが pairのデフォルトコンストラクタはfirstおよびsecondを値初期化することになってる
昔試した時は、初期化させないアロケータを自分で作った可能性がある
>>220 本気で質問する気があるなら
エラーメッセージも書くか
エラーが再現する最低限のコードを
codepadかideoneに貼れksg
228 :
デフォルトの名無しさん :2013/06/27(木) 22:19:46.44
しーぷらぷら
マジキチぷらぷら丸
関数に付いてるconstがよくわからないんですが
メンバ関数の方なら その関数を呼んでもメンバ変数が変更されないことを表す
>>231 struct UNKO {
bool fuck () const && {★}
bool fuck2 () && {}
int v;
} kuso;
星印に於いてthisがconst UNKO &&型となる。
考え方としてはconst UNKO && this = &kuso;
としてから呼び出している感じ。
なのでfuckの中ではthis->vは弄れないし、
fuckからfuck2の呼び出しは
UNKO && this(fuck2の) = this(fuckの);
としているようなものなので 呼び出せない。
static関数ではthisが無いのでconstは付けられない。
あ、&&が邪魔だった。読み飛ばして。
つまりこういうこった class X { void f() const && {} }; X x; move(x).f(); → X 「const &&」 tmp = move(x); X const * const _this_ = &tmp;
よく聞くPODって何なんだぜ?
C時代の構造体
そんだけなの? 構造体って言えばいいのに
C :構造体 = POD C++:構造体 ⊇ POD
ほぅ、ではC++の構造体というのが 規格の何ページ目で定義されるのか 伺おうか
ページ数とかムズいな。
いまどきページ数固定の本で調べてるってのがね。
PDFでもページ番号打ってるな JIS X3014:2003なら122ページ ISO/IEC 14882:2011は中見てないけど218ページくらいかな
PODは構造体のことじゃなくて(細かい規定は抜きにすると)C時代のデータ型のことで intとかcharもPODだよ
コピーできる値がPODで そのままコピー出来ない参照(配列・ポインタ)と区別するための言葉
構造体の中にポインタとか配列があったらPODじゃなくなるん? 初耳だな
非PODのポインタや配列があったら非PODになりそうな気がする 規格は読んでない
9 [class] p8,10 でそれぞれ stadard-layout struct と POD struct が定義されている。 いずれも 〜 class から 〜 union を除いたものとされる。 ページ番号は 217 でいいのかな?
>>249 で、構造体(structure)の定義はどこ?
用語として structure の定義は無いよ。
C++11で消えちゃったもんね
253 :
デフォルトの名無しさん :2013/06/29(土) 05:01:54.90
激おこプンプン丸 マジキチぷらぷら丸
激(ハゲ)おこプンプン丸 マジキチ ストラップ先生
関数化を検討する目安教えて 短い関数書いたらそれはおかしいって言われて困惑してる
257 :
デフォルトの名無しさん :2013/06/29(土) 17:55:29.54
短い関数を否定するなら swap も全滅だな
>>255 長い関数とかそれこそどこかに無駄があると考えるのが自然であって……
>>255 おかしいって言う方がおかしい。
今時の環境だと関数呼び出しのコストなんて微々たるもんだし、最近のコンパイラなら
よしなにインライン化してくれるからノーコストな場合も多い。
そもそも、最近は制御文の一切合切まで全部関数化されてて、メインのフローがauto
と関数呼び出しの羅列とかでもアリってことになってんだろ?
個人的にはかなり奇異に見えるんだが、それに異議を申し立てると老害呼ばわりされ
そうでジッと息を潜めてるw
inlineもループが含まれているとインラインのメリットが打ち消されるとして インライン化しないコンパイラが多いな
関数毎にドキュメントを書かされるジョブがあって、 それがとても面倒臭いとみんな考えていた。 1000行を超える関数がいくつもあった。
>>255 意味的に完結できる単位であれば、小さければ小さいほどいい
…て、死んだじっちゃんが言ってた
263 :
デフォルトの名無しさん :2013/06/29(土) 18:23:05.74
インライン化されない方が速い、コストがかからないのが普通。 大規模なコードを読み込むとキャッシュから前のが追い出される。 なんども使う部分がCPUキャッシュに乗りっぱなしが速い。
264 :
デフォルトの名無しさん :2013/06/29(土) 18:30:23.18
インライン展開 - Wikipedia
欠点
インライン展開は性能を悪化させるような問題もいくつか存在する。
コードサイズの増加によって、コードによってはキャッシュメモリに収まらなくなる場合があり、キャッシュミスによる性能低下を引き起こす。
インライン展開された部分で使う変数が加わることでレジスタの消費が増えると、場合によってはレジスタが足りなくなり、新たなメモリアクセスが増えてしまう。
コードサイズが大きくなりすぎると、メモリサイズなどのリソース限界を超えてしまうことがあり、動作不能になったり、スラッシングを起こしたりする。
欠点も存在します。例えば、巨大な関数を inline 展開してもコードサイズの肥大化を招き、
プログラム自体がキャッシュミスしてしまう可能性が高くなります。
また、巨大でなくても色々な所から呼び出されている関数をインライン展開してしまうと、
呼出毎に関数のコピーが出来てしまい、これもコードサイズの肥大化を招きます。
http://myoga.web.fc2.com/prog/cpp/opti03.htm
265 :
デフォルトの名無しさん :2013/06/29(土) 18:35:06.04
CPU とキャッシュのはなし
メインメモリは遅い
CPU からメインメモリにデータを読みに行く場合、これはとにかく遅い。
例えばレジスタにあるデータを読みに行く場合と比べると、だいたい数倍から数100倍の遅さ。
キャッシュライン
CPU がメインメモリからデータを読み出すとき、必ず小さなメモリチャンクをキャッシュ上にロードする。
ロード単位はプロセッサによるけど、だいたい 8 〜 512 バイト。
アクセス対象のデータが既にキャッシュに載ってる場合は、メインメモリじゃなくてキャッシュを読みに行く。
ない場合はメインメモリにアクセスするけど、そのデータはもしかしたら既にキャッシュラインに載って
キャッシュに読み込まれてる途中かもしれないから、いまのキャッシュラインがロードされるのを待って、
欲しいデータがキャッシュに載らなかったのを確認してから、改めて欲しいデータをキャッシュラインに載せる。
これがキャッシュミスヒット。遅い。
L1 Cache と L2 Cache
ふつうキャッシュは 2 種類ある。すぐ近くにある L1(Level 1)Cache と、ちょっと遠くにある L2(Level 2)Cache の 2 つ。
CPU はまず L1 にアクセスしにいく。L1 になかったら L2 にアクセスして、みつけたら読み込んで L1 に保存する。
L2 にもなかったらメインメモリにアクセスして、読み込んでから L2 と L1 に保存する。
インライン化はよく吟味して使う。コードがでかくなってキャッシュに載り切らなくなるから。
インライン化したら遅くなったなんてのはよくある話。最適化するならまず計測から。計測できなかったら最適化しないぐらいの勢いで。
http://graphics.hatenablog.com/entry/2012/03/23/175113
266 :
デフォルトの名無しさん :2013/06/29(土) 18:43:31.91
あれれ? 直列だったっけ?? 俺の記憶違いかなあ
>数100倍の遅さ たかがメインメモリの8バイト程度のロードに CPUクロック500Hz相当以上かかると言っている?
268 :
デフォルトの名無しさん :2013/06/29(土) 19:44:26.26
ソースにWikipediaを持ってくるゴミってまだ生き残ってるのか ゴキブリみたい
自作には疎いけどメモリモジュールにも動作周波数がついてることは知ってる
test
短いほど良いというが関数にする意味がたいしてない事までいちいち関数にすると 同僚がいちいちドキュメントを読まなきゃならなくなるから嫌われるよ 例えばタイピングを楽にするための短いラッパーや例外を隠蔽するだけのラッパーなど ラップされるクラスや関数がチームメンバーにとって既知ならこの関数があるせいで ドキュメント作成からドキュメントをメンバー全員が読むまでの手間が増える これは人件費に換算したら意外とバカにできないコストになる したがって短い関数は関数にせずクライアントコードに直接書いたほうが会社に貢献できる
いえ全然
shared_ptr<IFoo> CreateFoo() { try { shared_ptr<IFooFactory> factory = GetFooFactory(); return factory.create(); } catch(...) { return shared_ptr<IFoo>(); } これはダメな例ね こういった意味のない処理を関数にするのは良くない習慣だ 自分が少しタイピングを楽したいだけなのに周りにドキュメント読む手間を取らせて迷惑かけないで欲しい
ドキュメント作成、ドキュメント読みなんて行為自体が時間の無駄
>>271 普通は繰り返し使う方向に持っていく
学習効果が出てくるのでトータルで見れば、ソフト自体の安定性も上がるし、読み合わせの時間も短くなる
ただ、この方法の唯一の欠点は、末端の請負担当のみの力では実現できない可能性が高いこと
そうだとすると、
>>271 のような常にその場一回限りのド○タ開発的発想の方が楽だろう事は否定できない
>>274 俺もそう思う。
そうは言うても、雇われの立場では仕方ないこともあるでの。
自作の引数を取るマニピュレータを作りたいのですが、なかなかぐぐってもいいのが見つかりません VS2012では_Smanipというマクロを使いますが、使わずに自作したいのですが
>>273 意味の無いどころか、エラーを握りつぶして使えないインスタンス返すとか、
邪悪なコードにしか見えない。関数化の話と関係なしにアウトだろ。
お前の頭があうと
なんでも関数にしないやつはアウト
>>277 ・状態を持つクラス
・引数に応じた状態でそのクラスを作成して返す関数
・ストリームとそのクラスに対してオーバーロードされたoperator>>,operator<<
を定義すれば良い
コンストラクタでいいのか関数いらんな
クラスがポインタをメンバ変数に持ってるとき、constが実体にも伝播して欲しい場合がある そういう定義があっていいと思うんだ
284 :
デフォルトの名無しさん :2013/07/01(月) 08:16:05.31
ポインタがハンドルになっただけでボロが出る
出てもいいだろ、const_castやmutableと同じアビューズなんだから 真っ当に書いてもpimplの可読性がひどいのは頂けない
287 :
デフォルトの名無しさん :2013/07/03(水) 13:45:31.67
ゲーム制作中のエラーなのですが、相談させてください。開発環境はvisualstudio2010です。 さっきまで問題無く動いていたプログラムなんですが 自分があるクラスのプログラムにlist操作を加えたところ いきなり、エラーが数百発生しました(800以上。 問題はこのエラーで、どれも、 構文エラー;';'が'}'の前にありません 構文エラー;'>' '(クラス名)':定義されていない識別子です。 直前のエラーを修復できません。コンパイルを中止します '(クラス名)':識別子がクラス名でも名前空間名でもありません。 などと、自分にとって目視で確認出来るエラーばかりで 目視上では、問題無いものばかりです。 ポイントは、いきなり数百ものエラーが発生する、 listやvectorを組み込むとたまに出る、 数百の大部分はこのようなエラー文です↓ 「エラー 490 error C2143: 構文エラー : ';' が '}' の前にありません。 c:\program files\microsoft visual studio 10.0\vc\include\vector 176 頻繁に出るわけじゃないですが 前回このエラーが出た時は、四苦八苦しつつもプログラムを打ち直してたら なにかの拍子に正常にビルド出来るようになりましたが、原因は未だに理解出来ずにいます。 で、今まさにこのエラーが出ている状態で困っております。、 今後の為にも対処法というか、原因を知っておきたいのもありますし、、 一体、考えられる問題はなんでしょうか?経験のある方、わかる方、教えて下さい。
定義から宣言が見えないんだろ
現象を再現できる最小のソースを貼ってくれ
要領を得ない説明をダラダラ重ねるよりソースを貼るべき むしろ説明すべきなのは↓だ ・勉強し始めて1ヶ月未満 ・コロンとセミコロンの区別もつかない ・入門書もろくに読んでなくていきなりコピペ改造をやろうとしてる
291 :
デフォルトの名無しさん :2013/07/03(水) 14:24:54.11
初心者ではありますが、一年ほどの勉強を経ています。
不細工ながら、ゲームを仕上げたこともあります。コピペ改造ではありません。
ソースを貼りたいところですが、すでにクラスも10以上だし
各部分もそれなりに量があり、原因がわからないのでどこを張り付ければいいのかわかりません。。。
listやvectorを多用しているのですが、
さっきまでは動いていたので、追加したlistを消してみたのです。ですが、なんとエラーの数は減ったのですが
ビルド出来る状態に戻りませんでした。動いてたはずの状態に戻したのにです。
ちょっとわけがわかりません。
>>288 詳しく教えて頂けませんか?
あなたのおっしゃる通り、ひとつのclassがまるごと認識してない感じのエラーなんですが
どう考えても宣言は出来ているはずなのです
vectorやlistを多用しておりますが、どれもシングルトンで制作しており、実体化はCPPの方で定石である
class名* class名::getInstance()
{
if(instance==0){
instance = new class名();}
return instance;
}
class名* class名::instance = new class名();
と記載して、実体化しております。
というか、これで動いてたので、記載には問題が無いはずなのです、、
インクルードの重複も考えましたが、各hファイルには必ず
#pragma onceをつけているのでclassの再定義はおかしいはずです、、、、
>>291 ZIPで圧縮してアップローダーにあげてみよ
>>291 エスパーでも分からんわw
>なんとエラーの数は減ったのですが
>ビルド出来る状態に戻りませんでした。
とりあえずバックアップしてあるコードの中から
正常に動作する最新のコードを引っ張り出して
もう1回そこから組むしかないんじゃないか?
それで今度はこまめにビルドして、エラーが出たら質問に来い。
295 :
デフォルトの名無しさん :2013/07/03(水) 14:45:36.76
>>293 class型の再定義というエラーが原因?なのでしょうか、
そのclassを利用している他のクラスでは認識できない型が使われている、との
エラーが出ています。
しかし、再定義ミスをしないように、#pragma onceはつけていますし、
シングルトンなので宣言自体はひとつしか記載していないはずです。
それ以外に、再定義するポカをやってるケースを教えて頂けないでしょうか?
vc10のvectorの176行目だとoperator+か 変なクラス作ってるのまではわかる
298 :
デフォルトの名無しさん :2013/07/03(水) 15:00:38.01
すみません、各ヘッダファイルにて #includeする順番とか、#pragma onceの位置とか 気にする必要ありますか? 必要なものを無造作に羅列してるだけなんですけども。
299 :
デフォルトの名無しさん :2013/07/03(水) 15:11:36.59
>>297 期待したのですが、どうやらインクルードの順番は問題無いようです。
(順番を変えてもエラーに変化ありません
>>298 #includeする順番はめちゃくちゃ重要
>>299 インクルードしたファイルの中でインクルードの順番あってるか?
302 :
デフォルトの名無しさん :2013/07/03(水) 16:03:57.78
>>301 あなたのインクルードのご指摘のおかげで解決出来ました。
手違いで双方向状態でインクルードさせていたみたいです。
こんなエラーになるとは思いませんでした。
ありがとうございます
includeの順番に強く依存するライブラリは糞。 だいたい必用なら自分でincludeしろっての。 順番守らないといけないとか、低脳のも程がある。
vc++でstdafx.hに何でも放り込んでるとinclude不足のライブラリ書いてしまうことがある
>#pragma onceの位置とか
先頭以外あり得ないだろう
何を言っているんだ
>>298 は
>定石であるclass名* class名::getInstance() 勇気あるな 俺だったら例外安全が気になってナマポは無理
今二次元ベクトルを扱うクラスを作って見てるんだけど 演算子のオーバーロードで引数に中括弧ってどうやって使うのだろうか 配列の初期化みたいな感じで代入して見たいんだけど
無理
std::initializer_list
>>309 initializer_listを使用したサンプルを
拝見させて貰おうか
初期化じゃなくて代入で
つうか、中括弧て普通 {} の事だよな?
じゃあ 梅かっこ竹かっこ松たかこで
>>314 ドサクサに紛れて何意味のわからねえ事言ってんだよ
…おもしれえじゃねーか
[] だいかっこ {} ちゅうかっこ/ブレイス () しょうかっこ/パーレソ <> あんぐるぶらけっと まるかっこ()、やまかっこ<>というやつはジジイ、 かぎかっこ[]は殺害、 カーリー{}は変態、にょろかっこはhoge厨
二次元ペドを扱う、に見えた
>>317 []はスクウェアブラケットじゃなかったっけ?
( カッコ ) コッカ
if と fi を思い出した。
(小括弧,丸括弧,parentheses) {中括弧,波括弧,curly bracket} [大括弧,角括弧,square bracket] <不等号(より小),不等号(より大),less-than sign,greater-than sign> だってそれJISX0213やISO/IEC10646で言われてるから しかし大中小括弧の名称はあまり使わないほうがいい模様
<x|Q|y>
322は老害JIS信者。 「句点はカンマだ、とか Zはゼットでなくゼッドまたはズィーで お前ら全員アホ」 とのまたうレベル。
>>324 え、「正式名称」の話題じゃないの?
[], {}, () は普通に大・中・小カッコと認識していたが
<> はって?
>>317 で初めて読み方知ったよ……
シェブロンだろアングルブラケットとか長いし
>>325 何の正式名称だよ
iso646は2chに関係ないだろ
>2chに関係ない 馬鹿
( wax ) wane [ U turn ] U turn back { embrace } blacelet < angle > right angle
少なくとも2.3 Charactersetsによると C++のソースコードの文字は ISO/IEC 10646とは微妙に違うよね
括弧とは違うけど、~ を にょろ と読む奴は hoge並に不愉快だ。
332 :
デフォルトの名無しさん :2013/07/05(金) 12:44:53.43
質問させてください。フレーム制御についてなんですが、 五枚の画像をじゅんぐりに表示する(アニメさせる)のに自分はこう考えてます。 if(this->count % 5 == 0){画像1の描画処理} if(this->count % 5 == 1){画像2の描画処理} if(this->count % 5 == 2){画像3の描画処理} if(this->count % 5 == 3){画像4の描画処理} if(this->count % 5 == 4){画像5の描画処理} しかし、これではものすごいスピードのアニメになってしまいますよね? 一枚一枚の表示時間を長くしたいわけです。 で、自分はそうしたい場合、countを細分化してわざわざ同じ画像を振り分けています 例↓ if(this->count % 10 == 0){画像1の描画処理} if(this->count % 10 == 1){画像1の描画処理} if(this->count % 10 == 3){画像2の描画処理} if(this->count % 10 == 4){画像2の描画処理} …以下同じ要領で書き連ねる 賢い方ならわかると思いますが非常に非効率ですよね、、 どうやればスマートな命令になりますか? 知恵をお貸しください。
どう考えても{画像*の描画処理}はまとめられるだろ…
フレームって何ですか?
(count/100)%10 == 1
フレーム数をハードコーディングとかやめとけって
337 :
デフォルトの名無しさん :2013/07/05(金) 13:19:04.58
>>336 では、あなたならこうする場合どうするんですか?
>>335 その方法もわかるんですが、結局似たような感じで羅列しませんか?
>>332 1. 分岐毎にいちいち割り算するな。一回で済ませられるだろ。
2. switch使え
3. ていうか画像を順番に表示するだけなら配列につっこんで置いてインデックスでアクセスすればいいだろ
>>337 タイマーイベントと組み合わせたアニメーションループのようなクラスなり関数なりをまず書くだろうな。
画像は適当な配列構造にでも突っ込んどいて、インデックスを指定して取得する。
>>338 もう少しヒントお願いします。
ちなみに配列に入ってますが29〜38までの10枚で
それを順番に表示させたいのです
a=( count / 60 ) % 10;
switch(a){
case 0:
*
case 1
*
な風に、switchを使いましたが、やはり、おかしくなります。
タイミングを遅くするところが想像しづらいです。
>>339 アニメのためにクラスを作るのはちょっと
>>340 aに29足せやw
一定間隔で切り替えたいならタイマーイベント使うなりスピンウェイトするなりすればいい。
>>342 >一定間隔で切り替えたい
これを叶えるためには、やはりタイマーを使わないとダメですか?
スピンウェイトは使いたくないです
>>343 >>タイミングを遅くするところが想像しづらい
とりあえず自分の興味のある数値を定数なりで定義するところから始めたら?
const int total_frame ??= 600; // アニメーションに必要な総フレーム数
const int image_start ??= 29; ??// アニメーション開始画像のインデックス
const int image_count = 10; // アニメーションのコマ数
const int animation_interval =??
total_frame / image_count; //ひとコマ辺りのフレーム数??
Image* imageList[] = { ... };
void draw(){
// 現在表示すべき画像のインデックスを求める。
int index = (this.frame_count / animation_interval) % image_count;
draw_image( imageList[image_start + index] );
}
>>332 countはどのようにカウントアップされるの?
タイマーイベントじゃないの
もはやC++とは何の関係もない件
こいつ最高にアホ
this.なんてC++にはないなあ どっか行けよカス
おっ自演か
Cを一通りやってC++に移行するとしたらどの本がオススメ?
ロベール
355=キチガイ
357 :
デフォルトの名無しさん :2013/07/05(金) 22:02:08.78
>>353 最近はもう別言語
目的によるけどLL言語の方が入門書やオンラインマニュアルが充実してるのでおすすめ
C++は言語仕様が多いので一通り使えるようになるまでが非常に長い
そうだよなあ…でもCを一通りやった方がC++を有効に使えそうだが 適当な入門書を読んだら「入門書の次に読む本」がオススメ
簡単なツールならCでササッと作ってしまう C++だと参考書みないと覚えてられない事が多すぎる しかし大規模なプログラムになるとCは辛すぎ 目的に応じて使い分けだな
ハゲの本だけは読まない方がいい
そうか? 俺は禿本こそC++の真髄だと思うがな。 と言ってもD&Eしか読んだこと無いんだが、背景を知ると理解が深まる。
363 :
デフォルトの名無しさん :2013/07/05(金) 23:10:58.64
class IV SKINHEAD product
hoge先生、C++11対応の本出したんだよな これがいまのマス書き本
プログラミング言語C++ 第4版はいつ翻訳されるんや
説明などでhogeを使ってる書籍だけは絶対買わないほうがよい hoge使ってる書籍は内容も腐ってる hogeが使ってあれば例外なく悪本
メンバ関数の実装をクラスの定義と一緒に(ヘッダに)書くと、 inlineとしなくても暗黙的にインライン関数になるというのは本当ですか?
暗黙的にインライン関数になるけど、実際インライン展開されるかどうかは知らん
ということは、全部ヘッダに書いているテンプレートクラスのメンバ関数も、 インライン展開されているかもしれないということでしょうか。 もしそうなら、テンプレートクラスのメンバ関数をインライン展開しない方法はありますか。
インライン展開を完全に抑止できるかはコンパイラによるとしか言えないだろうな
>>369 まずC++第2版のexportに対応したコンパイラを用意します
__declspec(noinline)
>>367 ,369
ヘッダにかどうかは関係なくメンバ関数の定義をクラス定義の中に書くと暗黙的にinlineが付いてるものとみなされる
クラステンプレートの場合も同じ
template<class T> struct X { void func() {} }; // funcは暗黙のinline
template<class T> struct Y { void func(); }; // funcは宣言だけだからinlineではない
template<class T> void Y<T>::func() {} // 定義。明示的に指定しなければinlineではない
inline指定の有無にどの程度の意味があるかは他のレスのとおり
>375 質問者が知りたいのは言語仕様上の分類が インライン関数かどうかでなくて、 インライン展開されない方法だと思うのだが
aCCなら#pragma NOINLINE
>>376 それは正しいが公開の場での質問は質問者だけのものじゃない
質問の本題や質問者の意向とは無関係なところでも見過ごせない間違いや誤解を生みそうな表現があれば指摘・修正があったほうがいい
xlCならnoinline属性
質問がいつも不明瞭だから答えるほうも困るよな 質問記述言語とか作るべきじゃないか
>>377 よくわからないのだけれど
例を教えて
template<typename T, typename U>
class unko {
public:
T fun(U u) {インライン展開しないで}
};
>>381 とりあえず動かない系の質問は
「問題を再現する最小限のコード」だな。
これ以上1文字も削れないと言うところまで
削っているとたいていは事故解決するけど。
>>377 唯一ではないし確実でもない
リンカによる最適化だってありえる
スレッド生成とオーバーライドに関して質問です。 CreateThread関数の第三引数、lpStartAddressには関数のアドレスをぶちこむめばいいと思うんだけど、 オーバーライドされてる関数の場合、どうやって関数のアドレスを取ってくればよいのでしょうか。 例えば、 基底クラスArithのarithmetic仮想関数を、Arithを継承する子クラスAddにおいてオーバライドする場合。 int main(void) { Arith* = new Add; Arith -> arithmetic(); } ここで呼び出してるarithmeticのアドレスをlpStartAddressにいれてスレッドを起動させたいのですが。
lpParameterにArith*を突っ込んでlpStartAddressにarithmeticを呼び出すラッパーを指定する
ぶち込む 随分と言葉遣いが汚いな
392 :
デフォルトの名無しさん :2013/07/09(火) 01:08:15.48
育ちの悪いksは感覚が麻痺してるから分からないんだろうな。 哀れ。
>>388 俺そんな言葉しらなかった。
へー、汚い言葉なのか。
通じるし言いたくなるけどまあ汚い言葉だよな
file-name.cpp file_name.cpp どっちが推奨なんでしょうか
ノートPCの日本語キーボードが英語キーボードに誤認識された時に 入力不可能になる "_"よりも"-"をできるだけ使いたい しかしc++では"_"みかける事多い
ファイル名にはどっちもいらん
ファイル名にはドットをつかえ hello.world.hpp namespace hello { class world { ... } ; }
>>399 それはそれで二重拡張子で怒られるんで……
キャメルケース? でもWindowsでは大文字小文字区別しないからな……
実行形式じゃない二重拡張子で起こるってどこの糞ソフトだよ
case preservingとcase insensitiveの違いもわかんねえのか
NTFSはcase sensitiveだが。なにか?
>>405 ほう、それじゃ
caseSensitive.cppとCaseSensitive.cppが同じフォルダに置けるのか?
case sensitiveなら置けるはずだよなあ
>>406 http://support.microsoft.com/kb/100625/en-us > In NTFS, you can create unique file names, stored in the same directory, that differ only in case.
> For example, the following filenames can coexist in one directory on an NTFS volume:
> CASE.TXT
> case.txt
> case.TXT
> However, if you attempt to open one of these files in a Win32 application, such as Notepad,
> you would only have access to one of the files, regardless of the case of the filename
> you type in the Open File dialog box.
408 :
デフォルトの名無しさん :2013/07/09(火) 14:21:43.85
>>406 神も置けると言ってる。
http://support.microsoft.com/kb/100625 In NTFS, you can create unique file names, stored in the same directory, that differ only in case.
For example, the following filenames can coexist in one directory on an NTFS volume:
CASE.TXT
case.txt
case.TXT
自信たっぷりで煽ってたけど、今の気分はどう?
死にたくならない? 普通恥ずかしくて生きてられないよね。
あとはNTFSの機能をきちんと活かしたシェルを手に入れるだけだな
Windowsの話なのにNTFSの話で揉めてるのが滑稽
いずれにしてもWin32アプリだと、同じディレクトリにある大文字小文字違いのファイルを扱えないから 意味ないんだけどな。 かといって、hello.world.hppは無いわ。
>>408 鬼の首とったようにはしゃいでるけど、WinodwsでNTFSなら結局だめだからw
>>408 お前みたいな簡単な文脈も読めないでドヤ顔で無駄な知識披露しちゃう奴こそ
死にたくならない?普通恥ずかしくて生きてられないよね。
NTFSはcase sensitiveだけど、Win32アプリはそれを扱えないって??? なんでこんなミスマッチになったんだ? APIの変更が多大になりすぎるから止めたにでもなったのか
ファイル名にはハートマークも使えるくらいだから
416 :
デフォルトの名無しさん :2013/07/09(火) 17:29:58.22
原因は
>>403 だろ。
どう見てもこいつが話をまぜっかえした。
417 :
デフォルトの名無しさん :2013/07/09(火) 17:33:41.53
自分が恥かいたからってなにも向きになって責め立てなくても
419 :
デフォルトの名無しさん :2013/07/09(火) 18:02:37.28
Windowsで区別するオプションあったはずだぞ 動作保証外だからやろうとは思わんが
>>414 ファイルを扱うAPIとファイルシステムの
機能性はむしろ同じに扱うべきではないと思うが
421 :
デフォルトの名無しさん :2013/07/09(火) 18:35:45.42
べき()wwwww
プログラムの出力するどんどん追記していくログファイルを監視して 追記になった差分だけを読み込みたいのですが どのようにするのがよいでしょうか
>>422 tail -f で出来るから
tailのソースでも読んでみたら?
Win32はcase insensitiveと言うべきところをWindowsはと言った
>>400 が元凶。
でも explorer 上では case sensitive なのがなんだか というか、explorer 上で sensitive なのをみて win32 もそうだと思い込んでいる奴がいないか?
区別出来ないのに統一を怠る姿勢に対して 無頓着(insensitive)と呼びたい
431 :
400 :2013/07/09(火) 22:11:26.07
……要するに、「explorerでは大小区別しないし、Win32アプリからも大小区別できない。 だけどNTFSの仕様上は大小区別して置ける」ということか。なるほどなるほど ファイル名にキャメルケースは止めておこう
FATに置いた瞬間ダメになるんじゃ
FAT も LFN 対応なら区別するんじゃなかったかな? まあこれもあくまで、ファイルシステムの仕様としては、という話だが
今日のムダ知識大賞にノミネートされました
最近身を以って実感したんだけど、並列処理時に参照渡しってするべきじゃなかったんだな…… 重い処理部分をOpenMPで処理したはずなのになぜか遅かったから調査してみたら、 並列処理してる関数内で頻繁に操作される変数(参照渡し)が悪さしていることが分かったので、 値渡しに切り替えたら一気に高速化した……そんなのどこにも書いてなかったから知らなかったんだぜorz
>>435 独立したスレッド同士で扱う変数が実際のアーキテクチャでどう処理されるか考えるといいよ
むしろ普通ならレーシングで潜在的バグになるところを正しく処理するOpenMPは凄い
だからといって「並列処理時に参照渡しすべきでない」は早計
正しく使えばいいだけ
全ては実測
なんかconstつけたら早くなりそうな話だな
441 :
435 :2013/07/10(水) 01:47:19.26
>>436 参照渡しする変数は一応並列化用に配列として、それぞれのスレッド毎にあてがってたんだけど、それでも遅いとは……
まあ実測が一番ですよね、以後気をつけます
>>441 コード見てみないとわからないけど頭の悪い解析で勝手なmutex埋め込まれると確かに厄介だな
でもGPUと違ってCPUはブロック単位でキャッシュに載るから近い領域に同時に書き込もうとするとストールしそう
OpenMPって引数の排他制御なんて余計なお世話するか? 単に参照渡し(間接アクセス)と値渡し(レジスタ)の差じゃねーの?
>>443 普通に考えたらしないけどコンパイラによってしててもおかしくない気がした
規格読んでないから分からない
値渡しが安全なのは当然だけど参照渡しだから遅いってのはおかしな話
あとその括弧書きは的を射てない
値渡しでも関節アクセスになり得る
参照渡しは並列処理関係無しに最適化を阻害するから あり得ると思うよ
>>435 はコードすら示していないので考えるだけ無駄
この条件で、コードが無けりゃ考えられないのは素人
とド素人が申しております
値渡しできて、頻繁に使われる変数を参照渡し? OpenMP 使う以前にやることが...
あるゲームで、キャラクタを作成、管理するために 「Chara」クラスをつくりました。 class Chara { int id;// キャラごとにユニークなID int hp, str…;// 「キャラのHP」とか「キャラの攻撃力」とかのパラメータ static int staticID;//新しく作成するユニットにIDを振るために保持 static void makeChara(); } map<int, Chara*> charaMap;//グローバル変数 makeCharaで作成したキャラデータを保管 void Chara::makeChara { Chara* c = new Chara(); (cのhpとかstrとかをセット) c->id = Chara::staticID; charaMap.insert(map<int, Chara*>::value_type( Chara::staticID, c));//マップに格納 Chara::staticID++; } この方法だと、Chara::makeCharaが呼ばれてChara::staticIDが増えるたびに 全キャラのidが連動して変化するみたいなんです。 makeCharaメソッドで振ったIDをずっと保持するにはどうしたらいいでしょうか?
すみません、自己解決しました。 動作がおかしいところをよく見ると 「c->id」使わなきゃいけないのに「c->staticID」のほうを使ってました。 (cは直前にcharaMapからとってきたCharaオブジェクトのポインタ) つか、c->staticIDって普通にエラーにならずに書けて使えちゃうんですね…
そんなわけねーだろ
解決してたか
↓設計の良し悪しを語り始めるアホ
その設計は偽物だ 食べられないよ
>>453 >c->staticIDって普通にエラーにならずに書けて
禿は馬鹿だから仕方ない
説明しにくいんですが、継承クラス作るときの書き方みたいに クラスの宣言内のコンストラクタに クラス名(int,int):クラス内のメンバ変数名(引数),クラス内のメンバ変数名(引数) みたいに書いてるのをたまに見かけます。 トレースしたいんだけど、コンストラクタに:をつけて変数ならべるのは どういう意味ですか?
>>459 メンバ変数の初期化、なんでこういう流儀を導入したかのかはしらん
メンバ関数がconstだったり参照だったりすると
>>459 の方法でしか初期化できないからじゃん
後に続く{}の中で変更しようとしても無理
×メンバ関数 ○メンバ変数
>>459 初期化子かな?
メンバ変数の最も無駄の無い初期化と言われているよ。
{}の中に式で初期化を行うのは効率が悪い場合があるんだよね。
もちろん、多くの場合は微々たるものだけど。
class A { const int a; int& b; }; ↑こういうのを初期化するには初期化子しか手段がない
メンバ変数のコンストラクタ呼び出し、だな 機能的には 基底クラスのコンストラクタ呼び出しと 文法的に同じ形にしたかったんだろう
例えば、メンバ変数std::string a;を{}内で初期化すると 最初にstringのデフォコンが呼ばれ、その後で代入が行われるからムダになる
C++11ならメンバ宣言に初期化子付けられるがインスタンスごとに変えようとするならその文法も避けられぬ
std::initializer_listはマジ便利だな
469 :
デフォルトの名無しさん :2013/07/14(日) 17:18:48.14
皆さま、レスありがとうございます。 理解出来ましたが、その変数はconstでも無いし、参照でも無いんですよ。 でも、一番無駄が無い初期化の仕方というわけならば ソースを書いたのはプロフェッショナルな方ですから 日頃からそう初期化する習慣のある方、ということですよね? 普段コンストラクタの{}内で書いてた変数=初期化値;は コンストラクタ:変数(初期化値) と書いた方がなにかと良いよ、ということでよろしいですか?
欠点は、初期化順が初期化子の記述順ではなくメンバー変数の 記述順になり混乱の原因になる場合がある。
大抵は警告出すけどね 警告無視するアホがいるから何とも言えないが
そんな書き方をするアホが悪いでFA
俺の思う欠点も挙げておくよ。 全てのコンストラクタに書かないといけないのが事故の元。 c++11なら楽なんだけどねー。
だからコンストラクタが多いと結局初期化関数使う事もあるんだよね C++11ならいいんだけど
VSも早く対応してくれねーかな
既にプレビュー版では入ってるし 年内には出るだろ
C++ってどこで使ってんの? 大半のシステムはjavaとか.Netとかだし 組み込みみたいにパフォーマンスが欲しいならCだし
市販のパッケージ製品?
>>475 高い金取っているVSはすでにC++11完全対応じゃないのかよ
>>477 その java とか .net とかは C++ じゃないかな
>>477 どうでも良いシステムはjavaとか.Netだけど
重要システムや大規模システムはほとんどC++
対応コンパイラってどれ?
VC2012
逆に完全対応のコンパイラどれだよ
完全対応は知らんがVC++はかなり酷い部類
11の魅力を知ってVSなんて使ってる奴いるのかよ GUIしか扱えない学生レベルのもんだろあれは
お前ら仕事でもぽんぽん11使えてるのか
仕事じゃcppすら触らせてくれんわ 周りバカばっかだからjavaと.NETしか扱えない
インテリセンス無しにコーディングできない体になってしまってな
Java/.NETが許される場面ならC++なんぞ
お呼びでない
メモリ破壊とメモリリークのデメリットしか無いからね
バカだからjavaという発想の
>>490 が馬鹿
java や .net もCで書かれてんだけどな。
>>493 いやバカだから土方言語の案件しか取ってこれないんだろ
技術ある会社なら腐らせないで活用するのが当たり前
496 :
デフォルトの名無しさん :2013/07/14(日) 23:47:17.38
>>488 いや、逆に11に対する辛口の評価を背中で語っている存在だぜ
2010のinitializer_listは爆笑ぶっこいたけど
流れぶった切るけど、vectorやdequeなどで宣言する型に「newで確保した動的配列」って使えたっけ? 要するに、 int *x; x = new int[3]; vector<int[]> a; a.push_back(x); みたいに書きたいんだけど、↑ではちょっと不味いらしくて
vectorのvectorを使うとか
vector<vector<int>>
500 :
デフォルトの名無しさん :2013/07/15(月) 00:01:07.33
できるがvector<int[]> a;がダメだろ。 int*型にしないのは。
え、やっぱvectorしかダメ? 高速化のためにあえてnewした動的配列使ってたんだけど…… 一旦vectorに積み替えてから使う方向でないとダメなのか
>>500 int*型? ……おお、コンパイルが無事通りました。ありがとうございます
それ高速化になってるの?実測して言ってる?
やらんでいい高速化をして速くなった気になってるけど 全く変わらない悪寒
>>504 いや、一応速度を測ったら微妙にnew配列の方が速かったから使っているだけ
最初はvectorで書いてたけど、割りとギリギリな最適化が要りそうなので手直し中
506 :
デフォルトの名無しさん :2013/07/15(月) 00:06:14.00
これは確かに高速化になる。 vector<vector<>>は、メモリ拡大が起こると、再確保のためにメモリ大移動が起こるが。 ポインタしか扱わなければ、32ビットか64ビットのポインタ配列の拡大のみで軽い。
vector<int*>じゃなくてvector<int>で一次元配列化した方が速いと言うことは無いかい?
jag配列なら仕方が無いけど、要素数を保存しないってことは行列か三角行列なんじゃないの? 違う?
勝手にメモリ移動させるSTLのコンテナはクソ
うるせえわがままいうと勝手にガベコレすんぞ
>>507 あいにくキューとして使う用途でな……
ガチ演算(再帰探索処理)の前処理に使うから、一からキューを作るのは流石に嫌だったのよ
>>508 JAG配列ではない。盤面状況を保存するための配列をキューに放り込むための確保
差分保存しろよ
514 :
497 :2013/07/15(月) 01:01:45.33
……ん、まずい。ひょっとしてdeque<int*>みたいに宣言すると「ただのポインタの配列」ってことなのか? 「キューからAを取り出してからpop_front→Aを書き換え→push_back→Aを書き換える前に戻す→ 最初に戻る」とすると、二回目のループでpop_frontされる奴がまんま書き換える前の奴なんだけどorz これじゃ(幅優先探索)キューの意味ねーじゃん、どうするべきかな……
うぜえ…… そんなクソコード書いてる低脳が最適化とか笑わせんな
C++11ならキューに突っ込む時にムーブになるから速いと思う
「余計な機能」というのはデメリットにしかならない
518 :
デフォルトの名無しさん :2013/07/15(月) 08:39:48.06
「 コントロール(フォームも含む)のメソッドは、そのコ ントロールを作成したスレッドからのみ呼び出される必要があるから です(注1)。(これは、Windowsフォームがシングルスレッドアパー トメント(STA)モデルを使用しているためです。詳しくはヘルプの「マ ルチスレッド Windows フォーム コントロールのサンプル」等をご覧 ください。)コントロールを作成したスレッド以外のスレッドからそ のコントロールのメソッドを呼び出すには、マーシャリングにより、 コントロールを作成したスレッドからメソッドを呼び出します。この マーシャリングには多くのリソースを消費しますが、これを確実且つ 効率よく行う方法として、ControlクラスにはInvoke、BeginInvoke、 およびEndInvokeメソッドが用意されています。 」 これは記述はdobonのメルマガにあったんだが、意味が分からん。 上ではメソッドと書いてあるが、変数であってもアクセスできない と思うが、、、、というかTextBox.textにアクセスするような時に 「なんで書き込みできんのだ?」って気が付くわけなのだがなんでなの? 上は間違ってるの? たんなる言葉の綾? プロパティもメソッドの ひとつってこと? Invoke使わないアクセス方法はあるの? たとえばサブスレッドから グローバル変数にライトして、メインスレッドからはグローバル変数を 読むみたいな。
C#はすれちがい
521 :
デフォルトの名無しさん :2013/07/15(月) 10:45:53.70
メッセージはプロセス間だろ
522 :
デフォルトの名無しさん :2013/07/15(月) 10:48:25.04
>519 .NETならC++もC#もおなじことだろ。というかこんなのはC++使ってる のが詳しいとおもったから。
C++/CLIもスレ違いだからそっち行けば
>>521 Windowsアプリ作ったことないの?
メッセージループが基本なんだけど。
>>518 プロパティの実体はメソッドだよ
Aっていうプロパティがあったら、
get, set 用にそれぞれ get_A と set_A っていう隠しメソッドが作成される
いずれにせよC++には関係ないな
C++/CLIなら・・・
>>518 バカか?それを書いた奴に聞け。
超メジャーな教科書の疑問ならともかく、素人が垂れ流したクソの後始末を持ってくんな。
>>518 WindowsでUIスレッドとは別のスレッドからコントロールに直接アクセスできないのは基本中の基本
それと変数や単に変数をラップしたプロパティは別の話
スレ違いだからこれ以上はよそで
単に変数をラップしたプロパティも 別スレッドから扱うなら排他すべきだろ
なんで別スレからアクセスしたらあかんの?
>>530 場合によっては排他すべき変数アクセスと、初めから禁じられている
別スレッドからのコントロールアクセスは全然別の話
>>531 仕組みとしてスレッドセーフじゃないからじゃないの?
つまり、仕様。
別にWindowsに限った話じゃない 大抵のGUIツールキットはマルチスレッドに挑んでぼこぼこにされて帰ってくる
だからマルチスレッドのGUIツールキットは自前(自社)で開発したのを使っているところが多いよね
536 :
デフォルトの名無しさん :2013/07/15(月) 14:46:41.05
意味ない。 画面表示はシングルで十分。 内部がマルチスレッドになっていても、 人間がマウスやキーボードで操れるのは一つのウインド。 ドラッグアンドドロップでも関わるのは2つのみ。
ログ表示でちょっと困る
538 :
デフォルトの名無しさん :2013/07/15(月) 15:24:23.70
風になれー
>>536 意味がないということはない。
例えばユーザ操作とは無関係に変化する情報を
リアルタイムで表示しなければならない場合とか。
ロックしてUIと別のスレッドから操作する、じゃなくて、 UIスレッドで実行する、だからな
>>537 それわかるタイマーを使ってイベント毎にUIスレッドから定期的にログ内容保持部にお伺いを立てて‥‥とか一手間いった記憶があるね適当に自分で書かないとどうしようもない
>>542 自前でメッセージを定義か‥‥今度やってみる
素人しかおらんのか
暑いから素men
Windowsアプリでは、UIスレッドとの通信にはメッセージ使うのが普通だと思ってたが、そうでもないのか。
QはDOSの頭だからWindowsが理解できないんだろ
>>546 そう、それがごく普通の当たり前のやりかた
C#のマーシャリングだってPostMessage/SendMessage使ってるんだし
マーシャルてなんですか?
「マーシャリング」自体は広い意味を持つ言葉だけど
>>548 で言ってるのは
>>518 の意味
スレッド間の間接メソッド呼び出し
comオブジェクトを使う時のアレとは違うのですか?
一般的に「マーシャリング」っていうと何らかの境界を越えて間接的な 呼び出しやパラメータ伝送を行うことであって、具体的に何を意味するのかは 個々のテクノロジーによって違う。
仕事でC++を使うことになりました。 お勧めの入門書がありましたら教えてください。 C言語の知識は十分あるので、C言語と重複するような内容は省かれた、C言語を理解している人向けの 入門書を探しています。 ちなみに開発プラットフォームはQtです。 Java等も知らないのでオブジェクト指向初心者です。
>>553 「独習」一択,信頼のハーバードシルト先生
555 :
デフォルトの名無しさん :2013/07/15(月) 21:19:19.41
日本人の参考書の使えなさは異常
556 :
デフォルトの名無しさん :2013/07/15(月) 21:36:25.25
独習はC♯が微妙だった覚えがある
>>557 Java の方がもっと微妙肝心のvirtual関連が説明/定義のみで使えない、というか使うなといわんばかり
C# はまだまし
C省いてるなら独習かな
ここにはロベールの翻訳が、とかの人はこないの?
単に「C言語と重複するような内容は省かれた」の条件に合わないだけじゃ
562 :
デフォルトの名無しさん :2013/07/18(木) 23:58:13.61
いずれは国籍なんて無視して理系及び理系の重要性を認めて理系側についた 人間(ニュータイプ)だけで独立国家のジオン公国つくって、何も生み出す 能力がなく金や資源や穀物を右から左に動かして中間搾取するだけのモラル の無い腐りきった文系男(オールドタイプ)国家に戦争しかけるのが人類の 最終形態だろう、200年先になるか300年先になるかはわからんが
何なんだ意味不明なマルチポスト
物作りをする人間に報いるのは社会を活かすか殺すかという大問題だが、活かすためにも 官僚的な人や流通させる人も重要だ。物作りだけする人は営業や物流に疎くなる事があり それが産業自体に危機を招くこともある。 だからと言って搾取する輩はいつの世にもいるので取り締まる仕事も要る。 PGは理系かね?
NEC系列のPGは文系混じりのパープリン 他は基本的にすべて理系
銀行の勘定系、理系で設計できるかな?
むしろ文系には無理
1ビット脳が謎の万能感に浸るスレと聞いて
文系の方がいいプログラム作るぞ。 理系はどうも技術を追いすぎるか、動きゃいい的なヤツが多い。 あくまで、俺の回りは、の話な。
文系つったら三峯徹
>>569 「良い」の基準がよくわからないんだが
やっつけでいいのか保守しやすいように組む必要があるのかは状況によりけりなんじゃね
勘定系の設計なんて、会計ルールや関連する法律、慣行を理解してないと苦しいと思うが。
>>571 その通りだよ。
文系の方が空気を読んで、適材適所てきなものを作ってくれる。
今書いてて思ったんだが、単に文系は意図を汲んでくれるが、理系は自己中なだけって気が。
あくまで、俺の回りは、ね。
結局さ、どれだけ業務を理解しているかとか、仕様を理解しているか、がまず重要で、次にそれをコードと言う文書に書き起こせるかで全てじゃね? 理系の優位って、組み込みでもなければ、あまり無くね?
あー、確かになー 人の書いた文書を理解して、機械の為の文書に翻訳してるわけか 思いっきり文系の仕事だな
初心者なのでよくわからないのですがVSexpressはどの種類を使ったらいいですか
いらないスキルのMBほどよく出る
誤爆
業務系アプリの詰まらなさは異常
>>569 > 文系の方がいいプログラム作るぞ。
プログラムを作ると言ってる時点で君に能力がないのがまるわかり。
要件定義〜設計〜製造〜テストの各工程で必要とされる能力はちがう。
あとツールみたいな小規模なプログラムなら、その場の空気読んで適材適所な対応でいいけど、勘定系みたいな大規模な奴は将来を予測して保守性も考えとかないと破綻するぞ。
>>579 とくに法律や慣行なんかで背景がわからないものへの対応はモチベーションが下がる...
>>580 理系にはお前みたいに理解しようとしないヤツが多いって言ってるの。
お前が理系かどうかに興味は無いけどな。
文系のヤツは、保守が必要なら、その必要性を理解した上で提案してくれる。
あくまで、俺の回りは、な。
類は友を呼ぶって知ってるか
>>582 保守と保守性の区別もついてないのか...
このレベルで自信満々なのが笑える
法律とか作る奴らは将来を予測して保守性を考えたりしてくれないぞ パワーゲームの尻拭いで見事な糞仕様を出してくれる
>>584 横だけど、そう言う細かい事を言ってるわけでは無いと思うよ
未だに理系・文系って分けて考えるのが、既に時代遅れだけどな。 ヨーロッパの一部、例えばフランスには理系・文系の名残はあるよ。 ただしそこでは、文系は理系相当のスキルをマスターしてる事が大前提。 更に、歴史・文学・政治などでの議論が出来るだけの最低限の教養を要求される。 いわゆる社会を動かす、本当の意味でのエリートだ。 一方、技術だけで食っていく人生の選択肢もある。 身分制度が厳しいがゆえのシステム。 日本の自称文系は、言論・哲学などの、「結果の間違いを指摘しづらい、方法論すら提示されていない」分野に逃げ込んでるだけ。
>>585 保守性 (保守じゃないよ) をどうするかを考えるのは、作り手だぞ?
お客さんや、ましてや法律作る奴等には直接関係しないよ。
見事な糞仕様でもなんとか対応できるように、保守性を高めとくんだから、言わば自衛手段だよ。
>>586 細かいと思っているなら、
>>582 と同レベルと言うこと。
無理に割り込まない方がいいと思うぞ。
>>588 何でそんなに人を見下すような形で噛みついてるの?
横から見るとそこが気になる
まいたいけ
592 :
デフォルトの名無しさん :2013/07/19(金) 13:52:46.00
C++の話をしようぜ
キレてないですよ!
594 :
デフォルトの名無しさん :2013/07/19(金) 15:48:54.55
>>587 ある程度から下の文系には知障みたいなのまで入るから仕方ない
時代遅れつーより知恵遅れ
ただのバカが理系じゃないってだけで自分は文系だって言ってるのは少し文系の人が可哀想には思えるよな
こんにちは。質問です C++でウィンドウズアプリケーションの開発を行いたいのですが 開発環境はどの開発環境がよいでしょうか。 EcliplseではWinアプリは作れませんか(MFCやDLLが使えない?) VC++が一番よいでしょうか。 Cは基本を学びコンソールプログラムが作れます。 C++でオブジェクトとクラスを学び、C#、JAVAに流れようと考えています。 Windowsアプリは絶対ではなく、最終的にはオープン系アプリの開発知識を つけたいと思っています。よろしくお願いしますm(_ _)m
追記すいません。 EclipseではminGWとGCC(これはminGWに入ってる?) が必要になりますでしょうか。
>>596 悩むぐらいなら素直にVC入れてたらええやないの、と言ってみる
>>596 C++最強ウィンドウズアプリケーションの開発環境はC++ Builder
64bitアプリではデファクトスタンダードの開発環境
C++ Builderってまだ存在してたのか
デファクトスタンダードとか冗談
602 :
デフォルトの名無しさん :2013/07/19(金) 21:13:31.25
冗談
603 :
デフォルトの名無しさん :2013/07/20(土) 01:14:45.62
lex/yacc あたりでC++のプログラムを読み込んでC++のプログラム自動改変したい 既存のソース公開されてるC++リファクタリングツールで改造しやすいの ないですか? それから #hoo baa parameter みたいな感じで改変する場所や変数に目印したいのですが #progn baa param はやっちゃだめなんでしょうか? #progn 以外に自分で勝手に使える名前はないですか?
ちょっと君には無理目
>>603 #pragma comment( user, "hoo baa param")
すればいいのかな?
C++のリファクタリングツールでPorkというの以外にソース公開してるのみつからなかった
C++読み込む部分だけ誰かlex/yaccで書いてないかな
いまなら libclang とかじゃないの?
607 :
デフォルトの名無しさん :2013/07/20(土) 02:17:37.49
clangってコンパイルの中間情報(AST)をxmlで出力してたのに あるバージョンからやめちゃったのは、やっぱり政治なんだろうか いつなくなるかわからないapiに依存したくないな
std::complex<double>とかstd::complex<int>とかをひとつのコンテナに入れて、簡単に取り出す方法ってある?
boost::any
入れる型の種類が事前に決まってるならVariant、コンセプトが決まってるならTypeErasureの方がいい Anyは汎用性が高すぎて逆に扱いづらい
type erasureしたらどうやって元の型を知るの?
型情報を一緒に格納する
RTTIを利用してホルダーからstd::type_infoを返せばよい
615 :
片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/22(月) 03:45:57.70
遅い理由分かってんじゃん 発見的じゃない方法使えよ
"ZIP形式"ってのを押したらZIP形式について説明された事には甚だ驚いた
utf8周り扱うのに何使ってる? 一貫して何を使うべきか判断材料が欲しいので情報ください icuは業界標準っぽいけど歴史的経緯でAPIがぐちゃぐちゃでまともに使える気がしない iconvは移植性低いし、C++11にはstd::codecvtがあるけどUCS以外扱えない それにutf8のまま処理したいことが多いと思うけどicu以外の選択肢って何かある?
変換ならicu使ってるけど APIぐちゃぐちゃって何のことだろう
頭がグチャグチャ
int32_tとか char16_t とかのtの意味教えてください。
type
有難うございます。 char16_t文字列ををcoutで出力する方法教えて下さい。
std::wcout << char16_t文字列
ありがたまきん
>>603-608 NetBeans が antlrでC++読み込みしてるそうだ
NetBeansのリファクタリング機能ってどうなんだろ
使ってる人います?
627 :
デフォルトの名無しさん :2013/07/25(木) 13:03:02.48
スーパークラスのフィールドをスーパークラスのコンストラクタを呼び出すことでサブクラスをインスタンス化した時に楽に初期化したいのですが サブクラスのコンストラクタにわざわざ SubClass::SubClass():SuperClass(){} とするしかないのでしょうか? また、サブサブクラスが存在した時 SubClass::SubClass():SuperClass(){} SubSubClass::SubSubClass():SubClass(){} とすることでSubSubClassのコンストラクタはSuperClassのコンストラクタを呼び出してくれるのでしょうか?
スーパークラスのデフォルトコンストラクタなら何もしなくても呼ばれるだろ
629 :
デフォルトの名無しさん :2013/07/25(木) 22:40:31.96
デフォルトコンストラクタじゃだめです 値を初期化するので
?
>>627 はデフォルトコンストラクタ呼んでるじゃん
それに「値を初期化するからデフォルトコンストラクタじゃだめ」は意味不明
C++プログラマじゃない匂いが
開発環境があれば試せば一発。百聞は一見に如かず
そこでスーパーコンストラクタですよ
てす
>>630 デフォルトコンストラクタでは
>>634 のint aに7という数値を入れられないですよね
で、例えばコンストラクタに引数がいらないにしろ
スーパークラスのメンバに初期化リストを使って値を初期化したいと思ったときはデフォルトコンストラクタではなく自分でコンストラクタを定義して、それをサブクラスから呼ばなければならない、と聞いたのですが
多重継承した際にサブサブクラスが同じようにサブクラスのコンストラクタを呼び出した時、サブクラスのコンストラクタで指定されているスーパークラスのコンストラクタは呼び出されるのでしょうか?という質問です。
>>637 /* end */ は馬鹿のしるし
礼なんか書くな馬鹿野郎
639 :
デフォルトの名無しさん :2013/07/27(土) 18:09:09.99
/* end */ の行が改行なしとかねw
boost::threadを使ってれば、 あとでboostをstdに変えるだけでそのまま使えますか?
はい
boost::numeric::ublas::prodの関数が引数にどんな行列を与えても invalid argumentsでコンパイルエラーになってしまうのですが こういうケースは何が原因でしょうか? OSは Mac OS X 10.8 Mountain Lion、 boostのバージョンは1.47.0で、boostライブラリのprod以外は普通に使えています
>>642 ググってわかんないなら、コード読めばいいよ
644 :
デフォルトの名無しさん :2013/07/31(水) 21:44:02.80
久しぶりに使ったら、数値と文字列の変換ですら、自動変換はしてくれず、単なるキャストはできず面倒だ。 ブーストは互換性とコンパイル時間が気に入らない。 おすすめの汎用のライブラリ、フレームワークありますか。 何らか土台なしには面倒な言語と認識した。
Qt
スクリプトに脳を侵食されたか もう手遅れです
>>643 わかんないならいちいちレスしなくていいのよ?
>>642 行列のサイズあってるの?
(l x m)行列と(m x n)行列の出来上がりのサイズは(l x n)行列だぞ?
>>644 意味わからん言い訳せずに、正直にboostがよくわかりませんといいなさい
ブースト何それうまいの? 規格の何ページに書いてあるの
651 :
デフォルトの名無しさん :2013/07/31(水) 23:00:49.19
boostは依存関係が入り組んでいて、使いたい機能だけを分離して、自作コードと梱包するのは困難だし。 すべてのコンパイラで動作するとは限らないし、動いても同じ出力になるかあやしい。
>>651 汎用ライブラリなんだから仕方ないだろ
切り出したい部分が明確なら、自分で作ればいいじゃねーか
>>651 分離する意味がわからない
boostなんて開発環境の一部ってレベルなんだから
一回導入したらおしまいだろ
出力結果が変わるような使い方するほどboost使い込むレベルなのかという疑問
ぶーすと厨わきすぎワロタ
656 :
デフォルトの名無しさん :2013/07/31(水) 23:22:54.85
PCやコンパイラが違っても、動作がほぼ変わらないのがいい。 boostのバージョン違いとか、そもそも動作しないとか、boostは困る。boost全体は重い。
boostの互換性云々言ってる奴はSTLも使わないんだろ? すげー縛りプレイ
STL何それうまいの? 規格の何ページに書いてあるの
>>650 規格の14章のテンプレートか?
使いまくりだが、何を言い出すんだいきなり
660 :
デフォルトの名無しさん :2013/08/01(木) 00:05:27.37
STLはコンパイラ開発してるところが互換性を保つよう開発してる。 boostはコンパイル、実行してみないとわからん。
>>659 modern design以前の使い方しかしないと…
そもそもmplないと規約にないtemplateの使い方なんてまともにできないんだしBoostいれないなら関係ないのでは
互換性を求める用途にC/C++を使うなよってツッコミはなし? 互換性を重視するとC/C++の長所がほとんどなくなってデメリットだけになる
>>663 個人的には無し
会社ではある程度容認している
互換性? 移植性のことを言いたいのかなぁ...
>互換性を重視するとC/C++の長所がほとんどなくなって 意味不明
>>666 処理系依存な要素を排除するのは難しい
結果としてコードが非常に冗長なものになる
もっと単純に言うと「C/C++の長所は環境依存した場合に最高のパフーマンスを発揮すること」だということ
妄想ですね 環境依存部分をパフォーマンスへの影響をごく僅かにしたままスイッチするなんて普通に行われてるし それが出来なければ、そいつが無能なだけで
実際、今どきブースト動かないビルド環境なんてあるの? そもそも開発環境依存てそんなに気になるか? 一人なら動く環境でやればいいし、大規模開発なら揃えるだろうし、配布なら出来上がりだけで良いと思うんだが
boostで作られた大盛りスパゲティはさぞかし喰いづらいだろうな…
複雑になったのはboostが悪いって言えていいな
boostが黒魔術のかかったコードを世に広めたのは 間違いない
antlrで変換かければBoost.MPLはいらない
vectorとかの動的メモリー割り当てサイズを過去の実行結果から学習して予測する 方法って本ありますか?
そんなピンポイントな本はないんじゃね
じゃあ、もうちょっと広げて。
>>676 そんな本は存在しないから
まず自分の頭で考えたら?
>>676 新しい確保が起きる度にメモリ領域が倍々になっていく理由は、そうすると
再割当て速度がO(n)で済むから
Efficient C++読んでみ
>>679 あなたが日本語が喋れるのは自分で考えたからですか?
あなたがC++を知っているのは自分で考えたからですか?
あなたが今使っているパソコンは自分で考えたものですか?
>>680 はぁ?
そんなこときいてるんじゃないんですけど・・・(唖然)
過去の実行データからどれくらい予測したいという言葉もりかいできないんでしょうか?
日本語わかりますか?
日本猿じゃないですよね?
>>681 ==
>>682 か
文体そっくりですよ?
煽りたいならもう少し頭使いましょう
あ、頭悪いから無理か
>>682 「過去の実行結果から学習して予測する方法」ならプログラミング関係なく単純な統計学の範囲
つまり統計学の本を買うのが適切だよ
「割り当てるべき適切なメモリ量の決め方」に関しては
>>680 が答えになる
685 :
デフォルトの名無しさん :2013/08/02(金) 16:05:51.36
適材適所でプログラムせよ たとえば1ギガから2ギガにするより、+1ギガを不連続領域に新規に確保するほうが低コスト
686 :
デフォルトの名無しさん :2013/08/02(金) 16:13:08.58
動的メモリ確保 - Wikipedia TLSFアロケータ 2の累乗ごとのフリーリストでは、最大で50%の無駄が生じる。 たとえば、65バイトのデータを格納するために、128バイトの領域を割り当てる必要があるためである。 Two-Level Segregated Fit アロケータ (TLSFアロケータ、「2レベル分離適合割り当て器」)は、 2のべき乗の分類の下に、さらに細かい分類を行うことでメモリ利用効率を改善する。 速度については、平均的なケースではdmallocと比べて少し遅いが、 固定サイズブロック割り当ての応用であるためどのような状況でも同じ時間で動作し、 最悪時間が存在しないのでリアルタイムシステムに向いている。 2003年に、リアルタイムオペレーティングシステムのアロケータとして発表された。 TLSFアロケータを採用したシステムには、Morph OS などがある。
初歩的な内容ですみません。 イテレータの指す要素のアドレスを得るには a = *&it でいいのでしょうか? *&がどのような順で解釈されるのかよくわかりません。
&*itだろ
693 :
デフォルトの名無しさん :2013/08/02(金) 18:35:42.01
互換性についてだが。 DirectXとかGUIとかOS依存度が高い部分についてでなくて メモリとか文字列とか基礎的な部分でさえboostは怪しいんだよ。コンパイルすら通らない危険が高い。 本家のページだったかで、各種コンパイラでコンパイル可能かの一覧があるとおもうが。対応がまちまちだ。
>>678 ,691
という事は普通に()を付けるか付けないかだけと考えてよさそうですね。
ありがとうございました。
a = &(*it);
↓
a = &*it;
>>693 それはboostの実装が怪しいんじゃなくてコンパイラの実装が怪しいんだろう
>>695 処理系依存な書き方をしてるだけであってコンパイラの実装は関係ない
697 :
デフォルトの名無しさん :2013/08/02(金) 19:21:50.70
コンパイラ依存を吸収するよう、汎用ライブラリは開発すべき。
テンプレートの魔界は仕様・実装ともにできちんとカバーされてるのだろうか
BoostはBoost自体のビルドにめっちゃ時間掛かるのがアレよね、便利だけど。
ビルドに時間がかかるのはBoost使ってるからじゃなくて、 Boostがtemplate使ってるからだろ。型推定に時間がかかる。 でもそれはランタイムにかかる時間をビルドに追いやってるからで、 実行時には高速に動くと。
>>700 というかバージョンアップでBoost自体をビルドし直すのが鬱い
特にWindows上でビルドすると死ぬほど時間掛かる
Boostを組み込んで使う分には、全部ビルドし直さず済むような書き方にすればいいんだけど。
ビルドは早いに越したことはないが、 gentoo Linux stage1 を経験した者からすれば、 あの程度のビルド時間など些細なものだ。
Boostっての使ったことないけど、なにがいいのよ?
>>703 なぜそこでGentooが挙がるのか全く分からんのだが
boostのビルド時間なんて短いほうだろ ちょっと大きめのコード書いたらすぐあれ以上になる
>>705 gentoo stage1は初回インストール終了まで何時間もかかる
その後の保守も基本は全コンパイルだからえらく時間がかかる
gccの更新なんかやろうもんなら泣きたくなる
それと比べればコーヒー飲んだり、ちょっと本読んでる間に終わるライブラリのビルドなんざ
大したもんじゃないと言いたかった
ライブラリとディストリを一緒くたにするのは比較対象としてどうかという事なら、確かに不適切だった
>>707 ディストリを1からコンパイルする場合はGentooが特別時間かかるってことはないよな。
なぜGentooに限定したんだろう。…w
>>708 俺が知る限り、GentooとLFSは導入・保守に際して100%確実にコンパイルを要するから
710 :
デフォルトの名無しさん :2013/08/03(土) 15:13:53.83
可変引数で質問です。 fnc ( string("aaaa"), string("bbbb") ); を実現するにはどうしたらいいですか。
C++で可変引数使うなでFA
713 :
デフォルトの名無しさん :2013/08/03(土) 16:05:53.31
>>709 gentooでもバイナリパッケージあるだろ
デフォルトでビルドしてるだけ
C++11ならvariadic template(だっけ?)使えばイケるんじゃね? 俺はよく知らねーけど、詳しい人よろ
素直にvector使え
717 :
デフォルトの名無しさん :2013/08/03(土) 17:21:32.43
私はなまけもののC++初心者です。 正規表現をしたいのですが、なまけものなのでCStringを引数にしたいのですが 調べてみるとstd::tr1というのがあるということなんですが、これは標準じゃないからだめだというような 情報もみます。 初心者なので常識がわからないのですがC++で正規表現をするときはみなさんなにがいいのでしょうか 開発はVS2010で行っています よろしくお願いします。
可変長引数ってC++の関数の多重定義と相性が悪いんじゃないのか C++11ならコンテナ渡せばいいんじゃね
>>717 Visual Studio 2010を窓から投げ捨てて
Visual Studio 2012でstd::regex
>>717 Googleのre2とか
Boost.Xpressiveみたいな恐ろしいものもある
>>719-722 ありがとうございます。やはり、複数あり
みなさんばらばらという感じなんですね
むずかしいな
723は文盲か? 標準かどうかを気にしてるんだろ?
725 :
デフォルトの名無しさん :2013/08/04(日) 12:19:10.72
複数あっても、自分ではひとつしか使わなければいいだろ。 微妙に検索結果がエンジンごとに変わるかもしれないが、そのときになってから別のを試したらいい。
>>717 怠け者、ゆとり、低脳はC++は使わない。C#にする
>>724 質問で聞いているのはその通りですが、
C++の正規表現事情についていろいろ情報がほしいと思っているのも事実です。
>>725-726 ありがとうございます。
ためになります。
自分でライブラリを選べない人にC/C++を使うのはむずかしい
>>722 xpressiveは知ってるけどre2ってどう恐ろしいの?
再帰関数はストァックオーバーフロゥが起こる可能性があり、 厳格なProgrameでは再帰関数を使用せず、ストァック アブジェクト 等を使用するべきでしょうか?
Oh, sorry miss spelling to programe for programme
732 :
デフォルトの名無しさん :2013/08/05(月) 12:20:43.47
釣り針でかすぎw
ストァック アブジェクトてなんですか
>>730 再帰を禁止、という制限は結構きつい縛り、スタックがあふれにくいアルゴリズムの採用、でなんとかならないものか。
あるいはもう自分でヒープにスタック構造をつくるとか、やりたくないけど
どうしたらこんな誤字になるのよ
736 :
デフォルトの名無しさん :2013/08/05(月) 17:42:14.57
シュトロハイム少佐だろ
C系言語は、もうそろそろ末尾再帰最適化に取り組むべき。
738 :
デフォルトの名無しさん :2013/08/05(月) 17:58:49.76
自力でアンロールできないアホ用じゃなんで
>>737 gcc ver.3 の時点で実現されているようだ手元のcygwinではそうなっている
740 :
デフォルトの名無しさん :2013/08/05(月) 18:39:11.70
言語は、つってるのに処理系の話をはじめる(ry
741 :
デフォルトの名無しさん :2013/08/05(月) 19:04:43.13
最下層のゴミクズがエラソーに末尾再帰語ってるつもりがやはり理解できてねー。WWWW 炎上学習法じゃ身につかない WWWW
無職のクズは何を話したとしても浅い
>>740 申し訳ないが違いが分からない規格に一行「末尾再帰サポート必須ね」という記述が欲しいのか?
744 :
デフォルトの名無しさん :2013/08/05(月) 20:00:19.51
言語に末尾再帰最適化とか言い出すバカ
>>744 コンパイラと言語の違いが判るように成ったらまたおいで。
>>746 あいまいな言葉で煙に巻くつもりか?
末尾再帰最適化なんて処理系という文脈以外で語れるわけねーだろ
748 :
デフォルトの名無しさん :2013/08/06(火) 08:44:07.86
末尾再帰最適化を規格に入れろとほざく馬鹿はスタックまでも規格に持ち込むバカ
749 :
デフォルトの名無しさん :2013/08/06(火) 10:46:14.84
,.――――-、 ヽ / ̄ ̄ ̄`ヽ、 | | (・)。(・)| | |@_,.--、_,> ヽヽ___ノ 6回チェンジしたらヤクザが来たでござる の巻
>>747 C系以外で、規格に入れてる言語もあるじゃん。
関数型言語じゃ仕様に含まれてるのが普通
>>750-751 言語仕様が処理系の具体的な実装まで規定してるのか
"should"じゃなくて"must"なんだよな当然?
言ってることが難しい!謝れ!!
>>753 仕様書に「末尾最適化しましょうね」程度に書いてあるのと
仕様書に「末尾最適化は絶対やれ。それが要求仕様だ」と書いてあるのと
意味ちゃいまっせということ
755 :
デフォルトの名無しさん :2013/08/06(火) 15:29:15.46
言語仕様と末尾再帰は関係ないだろ。 してもしなくても出力は一緒だ。 たとえばSTLの実装は、中身がどんな仕組みであっても結果が同じなら規格通りだろ。
756 :
デフォルトの名無しさん :2013/08/06(火) 15:29:55.65
「規格合致処理系は要件Aを満たす」という箇条を列挙しているだけで、行政命令とは違うんだが
>>755 普通はそう考えるよね
でも言語仕様で実装の詳細を規定していると主張する人がこのスレにはいるんだよ
隠れてないで出ておいでー
いずれにせよ、C++でその手の最適化が規格化されることなんて今後も有り得ないから
他の言語で「末尾最適化」を覚えた半可通が言ってみたかっただけだろ
>>752 規格では must は使わない、かわりに shall または shall not が使われる
761 :
デフォルトの名無しさん :2013/08/06(火) 20:02:53.52
shoud も mandate も may be もずんどこ使ってるが?
最下層変態ゴミクズが懲りずに知ったかぶりしてるのか?
関数型言語は基本的にループを再帰で実装するので 末尾再帰を仕様に入れざるを得ない
>>757 >でも言語仕様で実装の詳細を規定していると主張する人がこのスレにはいるんだよ
誰と戦ってるんだ?
>>764 関数型だと写像が基本になるから、再帰は必然だな。
最適化の話をしているのかな?
>>761 should/may be には強制の意味はないね
ISO/IEC9899:1999 4.1
In this International Standard, ‘‘shall’’ is to be interpreted as a requirement on an
implementation or on a program; conversely, ‘‘shall not’’ is to be interpreted as a
prohibition.
ま、これは用語統一の章だったから must で統一するんだったらそれはあり、ではあるけどね
>>762 ふむ、scheme R6RS では末尾再帰を適切に処理するのは must なんだね、それにしても R5RS より分量増えてないかい?追いかけてないのでよくわからないけど
>>763 お前にはついていけない世界だ
ばかめ、mustかshouldかと問われたらRFC2119での定義に決まってるだろ。
最下層変態ゴミクズは引っ込んで露
> ふむ、scheme R6RS では末尾再帰を適切に処理するのは must なんだね、
これもscheme学んだ事があれば知ってて当たり前の常識以前
これでlisp/schemeの人を自称できちゃうなんて、確かについていけない世界だ WWWWWWW
http://toro.2ch.net/test/read.cgi/tech/1370255305/612 >関数型言語(わたしゃ lisp/scheme の人)で
>>769 今は must/must not か shall/shall not の話ね
>>752 > "should"じゃなくて"must"なんだよな当然?
>>760 >
>>752 >規格では must は使わない、かわりに shall または shall not が使われる
>>771 あっそ。schemeも学んだ事無くて、末尾再帰の話題で知ったかしてるのか。
確かに理解できねー WWWW
スレタイは相談室、しかしあるのは知識自慢ばかりなり
理系の童貞学生にありがちな性質
スキームといったら普通代数幾何学だろ。 高校生ならハーツホーンくらい読んで当たり前だろ。
777 :
デフォルトの名無しさん :2013/08/07(水) 12:47:07.00
戦後"スキーム"のほうが普通。
778 :
デフォルトの名無しさん :2013/08/07(水) 18:42:36.35
ディレクトリ探索のwindows用opendirの決定版がないので自作するか。 いくつか試してみたけど、30000文字超のパスに対応しているのがない。 前に自作したけどど無くなった。 今度はネット上に投稿しておこう。 ネット上のコード管理のサイトをつかった経験がないけど登録・操作が簡単で数年は消えないのはどこ。
githubでいいだろ
780 :
デフォルトの名無しさん :2013/08/07(水) 18:49:21.67
サンクス。そこにしてみる。
>>776 ピレネーに隠棲してるんだって生きてるのか?
構造体の配列の一番目をnullにしたいんですけど、0で初期化って使用出来ますか? struct SEmployee{ string name; int Tell; }; enum{ EMPTY, YAMADA_ID, TANAKA_ID, SIZE } const SEmployee Employees[SIZE]{ 0, {"YAMADA",08033331111}, {"YANAKA",09022224444} }
>>782 nullにしたいってのがよく判らんが、0 じゃなくて{"", 0}だろ。
C++にnullなんてありません
>>783 それしかありませんか、EMPTYという役割なのに適当な値を入れるのに抵抗が
boost::optional<string> name にでもするか
C++には何でもある。NULLクリア、NULL terminate、NULL pointer
std::listで10番目の要素が欲しい!ってなったときどうすれば参照できるでしょうか? auto it = hoge.begin(); for(int i;i<SelectNum;i++){ it++; } return it; とループさせないとけないのか、 it+=10とかでもいいのか・・・ あとメモリ上にバラバラに配置されてる要素をなんでインクリメントで参照できるんですか? ※listというのはポインタ結合だと聞きました
std::advance 逆に考えるんだ バラバラだからインクリメントしていくしかないんだと
>>788 そりゃlistはランダムアクセスに向いてないだけだ。
それとイテレータのインクリメントは結合を手繰っていく作業だ。
XP、7(32bit/64bit)全対応のプログラムの作り方が書いてある本かサイトを教えて下さい それぞれXP環境でVC++2008でXP専用ソフト、 7(64bit)環境でVC++2012で7専用ソフトは作れます
構造体ってクラスみたいにnew演算子で、スコープを無視したインスタンスを作成できませんか?
>>788-789 C++11 なら auto it = std::next(hoge.begin(), 10) でいけるよ。
>>794 それって結局手繰ってるだけじゃないの?
>>795 結局手繰ってるだけだよ。記述がちょっと簡単になるだけの話。
結局、とか言い出すとSTLさえ使えなくなるからやめろ
その結局を理解してないなら使わない方が良いけどな
>>792 メンバのデフォルトがpublicかprivateかの違いのみ
c++ではstructとclassはそこ以外まったくおなじもの
>>788 単方向イテレーター
双方向イテレーター
ランダムアクセスイテレーター
という3種類がある
これらを調べればわかるよ
今のイテレータの分類てなんか間違ってるよなあれ なぜあんな仕様にしたんだ
802 :
デフォルトの名無しさん :2013/08/11(日) 14:22:39.88
疑問を感じたことが全くないが たとえばどんなところ?
>>799 アクセス指定なしで継承した時に
structはpublic継承、classはprivate継承になるという違いもある
805 :
デフォルトの名無しさん :2013/08/11(日) 15:02:07.66
807 :
デフォルトの名無しさん :2013/08/11(日) 15:35:33.03
鈍いなあ、自分の言葉で語れつってんだよ
そして次はソースを寄越せと言われる
ドキュメントの再作成は無駄かつ情報伝達エラーの原因になるから悪手 良く管理されたプロジェクトはドキュメントが最小限である
810 :
デフォルトの名無しさん :2013/08/11(日) 15:39:11.37
自分の言葉で語れないやつにそんな要求しないよ、それ以前だし
ドキュメントの再作成は無駄かつ情報伝達エラーの原因になるから悪手 良く管理されたプロジェクトはドキュメントが最小限である
813 :
デフォルトの名無しさん :2013/08/11(日) 15:42:34.50
イテレータの分類は間違っている、という主張に再作成もくそもあるか 再検証の可能性を与えることは、まず自らの主張を明らかにしてからの問題だ # こいつ引用と剽窃の違いも知らないんじゃないか
815 :
デフォルトの名無しさん :2013/08/11(日) 15:47:41.31
>>814 内容のなさ過ぎを笑われている自らの立場をまず自覚しろ
他人の文章の引用しただけで意見だと言いたいのかね。 本当にその意見に同意するなら、「なんか変」どころじゃないだろう。
ITスーパーパワー国の日本では糞な標準のイテレータなんてあんまり使っていないだろ?
イテレータの分類がおかしいのは多くのC++プログラマの知るところだが、>801はなぜそんな 仕様になってしまったのかということを聞いている。 その前におかしいのはどこかという、本題以前の質問がはさまれたので、リンクを貼ってくれた 人がいる。 そしたら、何故か本題以前の質問をしたやつが偉そうに文句をタレはじめた。←今ここ。
819 :
デフォルトの名無しさん :2013/08/11(日) 16:29:22.64
「多くの」だの「偉そう」だのという主観には興味がない 誰にでも同じ解釈ができる基準があるなら言ってみな 少なくとも、俺はおかしいとは思っていないC++使いだ 「おかしい」とは知ることではなく主張することだ 数学の証明とは違う
つまり本題以前の質問したカスが爆発すればみんな幸せなんだな
821 :
デフォルトの名無しさん :2013/08/11(日) 16:30:35.17
分類のどこがオカシイんだよ。そんな話は聞いたことがない。 どう分類するのが正しいんだよ。
>>821 >どう分類するのが正しいんだよ。
低脳ドカタじゃ答えるのは無理だ。この板に答えられる奴なんていない
824 :
デフォルトの名無しさん :2013/08/11(日) 16:37:25.16
826 :
デフォルトの名無しさん :2013/08/11(日) 16:49:35.68
混ぜるだけで「おかしい」のか?
>>826 分類はおかしくなるだろ
りんごとみかんを混ぜてりんごと呼んだら分類はおかしいよな
本来明確に異なる別々の機能なのに、 片方の機能名だけでもう一方を分類しているのはおかしいだろうな。
829 :
デフォルトの名無しさん :2013/08/11(日) 17:03:10.01
>>827 いや全然わかんない
そもそも「りんご」にたとえているものは何だ?
仮に逆進イテレータだったとして、なぜりんごにたとえる必要があるんだ?
で、また本題に戻るとだな、 iteratorの変な分類の元凶はA. Stepanovという事だ。
831 :
デフォルトの名無しさん :2013/08/11(日) 17:05:50.50
2つの理論を統合したらおかしくなるんだったら 相対論的量子力学とかもおかしいのか。
>>831 > 本来明確に異なる別々の機能なのに
読めますか?
両者が重なり合っているのとは意味が違うんですよ。バカ
はあ・・ 異なる2つの混ざり物を一方で分類してるからおかしいと言ってるのに、 なんで似た2つを統合する話になるんだ。
834 :
デフォルトの名無しさん :2013/08/11(日) 17:14:43.33
さっぱり具体性を帯びてこないな もともと存在しない答えを執拗に尋問しても無駄か
自分の言葉とやらで、おかしいことについての内容は十分に語った。
具体的な2機能については
>>804 の引用に明確に書いてある。
何が不満なんだ?
836 :
デフォルトの名無しさん :2013/08/11(日) 17:30:49.82
日本語で言うことすらできないことはわかった 誤訳を笑われたくないんだよな
いえ全然。 アホな人なんだなあ、と思ってるだけですよ。
一時恥をさらそうとも長い目でみれば利得は多々あるというのに匿名板でまで虚勢を張るというのも
>>837 素直にどう分類するかを具体的に列挙すれば済むのになんでそうしない?
そうしないとageが暴れるだけだろ
煽れば情報が手に入ると思ってる奴だと踏んでるから。
また炎上学習法か
>>840 低脳はスルーなんて高等なことができるわけない
不可能なことを要求するな。スルーできないような低脳が火に油を注いで荒れる
便乗で煽りはじめたぞこいつ
847 :
デフォルトの名無しさん :2013/08/11(日) 20:58:44.07
>>845 コンパイラ自体を開発するのでなければ関係のない話題だな。
プログラマは既に完成されてるコンパイラをいじくるだけでどう分類されようが関係ない。
お前がそう思(ry
class DECLSPEC CSound : public CGameObject
{
private:
/* 省略 */
// 新規スレッドに用いる関数
static DWORD WINAPI NotifyFunction(LPVOID param);
};
出典はこちらのPLAY.h
http://www.tnksoft.com/reading/classgame/engine/03/032.php ここのDECLSPECはどういう意味なのでしょうか?
これを書くとビルド時CSOUNDクラスが識別されずエラーになります。助けて。
error C2470: 'CSound' : 関数定義のようですが、パラメータ リストがありません。外見上の本体をスキップします。
dllとして利用できるようになる
>>850 dllとして利用しないのにDECLSPECを付けていると、こいつのせいでエラーになりますか?
852 :
デフォルトの名無しさん :2013/08/12(月) 20:06:42.13
DLLは__declspec(dllexport)とかの指定だ。 DECLSPECはそのページの作者が定めた語で、予約語とか関数とか一般的なマクロではないだろ。
COMでググればシアわせになれる
854 :
デフォルトの名無しさん :2013/08/12(月) 20:14:47.53
C++03以降の、std:: の定石がオンラインで読めるおすすめおしえれ <algorithm>をはじめ、使いこなしてないヘッダだらけになって内心あせってる アマグラマ。技量レベルは、template が一応アレルギーなく読める程度 lambda? なにそれおいしそう。STL? 汗だくの俺には過ぎた代物。
「declspec」は拡張属性構文全般のキーワードだっていうのに、dllimportとdllexportだけを使い分けるマクロにDECLSPECなんて命名するとか頭オカシイ。 uuid:クラスをDLLに…ってそれCOMで、COM用のdeclspec property:同上、ゲッタ、セッタを付けれる thread:お手軽スレッドローカル allocate:データセグメント指定 naked:プロローグ・エピローグコードの削除。インラインアセンブリとか書くなら結構便利に使う 自分はnakedをよく使うんでdeclspecって言うとnakedを連想するけど、だからってnakedをdeclspec呼ばわりしたいとは思わない。
C++ではmain関数から実行されるというのは本当なのでしょうか?
http://ideone.com/YbMnV7 このようなコードを組んでみたところ、
main関数から実行されていないことがわかります
これについてわかる方、説明してください
グローバル変数のコンストラクタはmain関数がよばれる前によばれるだけ
>>860 は?グローバル変数?
それが説明?
「よばれるだけ」←これは実行結果を見ればわかります
「よばれるだけ = main関数から実行されていないことがわかります」
それを説明して欲しいのが質問内容です
質問の趣旨を理解しろ
規格読めヴァカ
main関数から実行が嘘てことだよヴァカ
お前の勝手な妄想
>>861 実行の定義を明確にしたらいいだけ。main関数から実行されるとしたのは実行の意味のなかに初期化は入ってなかった
のではないかな?それに対して初期化を実行するのだから初期化が先だというのならば実行の定義が違うというだけ。
質問「C++ではmain関数から実行されるというのは本当なのでしょうか?」
返答「グローバル変数のコンストラクタはmain関数がよばれる前によばれる」
このやり取りのどこに不明瞭な点があるんだろうか。
>>861 お前にC++は向いてない。
PHPでも使っとけ。その方が幸せになれるから。
アスペが聞いているのは「本当」か「嘘」か。 「嘘」以上の事を長々と解説したお前の負け。
>>868 「本当」か「嘘」か自分で判定できないのなら質問者の負けでしょ。質問の答えを得られなかったわけで。
逆に「本当」か「嘘」かを自分で判定できたのなら質問者の勝ち。そして回答者の負けではない。
以上証明完了。
グローバル変数のコンストラクタからexit()呼んだらどうなるの?
>>870 ( ´,_ゝ`)プッ
正答出来なかった顕示くん乙
変な初心者だな 最初から全てを知ろうとか己の傲慢だぞ
>>865 いや、そんなことソースを見て
実行結果を見れば誰でもわかるじゃないですか?
その結果に疑問を感じたから質問したのでしょ?
質問の仕方が悪かった
頭の悪い人のために、分かり易く質問する
なぜ、グローバル変数のコンストラクタはmain関数がよばれる前によばれるのか?
これを説明できる人がいたらお願います
>>859 >C++ではmain関数から実行されるというのは本当なのでしょうか?
実行の定義次第で嘘にも本当にもなる。
878 :
861 :2013/08/14(水) 09:35:06.68
>>875 俺はゼロクリアが影響してるのかな?と思ったのだが
それが影響してるのかな?
( ´,_ゝ`)
>>874 Q. なぜ、グローバル変数のコンストラクタはmain関数がよばれる前によばれるのか?
A. C++の仕様でそう定められているから
Q. なぜ、C++の仕様でそう定められているのか?
A. 知るか。ストラウストラップに聞け
そもそもmain関数より後だったらmain関数でグローバル変数使えないじゃん
ワロタwよく居るよ 説明されてもわからない場合に説明の仕方が悪いとか説明する人が 頭が悪いからであって決して自分の理解力が足りないからではないと 頑ななんだよな。どうやって勉強していくのだろう。
そりゃグローバル変数なんだから使う前に初期化されてないと困るだろ ちょっと考えればわかることがわからないとかアホなんだな
>>882 ああわかったお前スクリプトからやってきたんだな
だから
>オブジェクトをmain関数の後で作成しています
なんてアホなことを言い出すんだ
きっと最低限の検索とコピペだけしかできないんだよ
>>883 >そりゃグローバル変数なんだから使う前に初期化されてないと困るだろ
グローバル変数など、そもそも使ってはいないのですが、
そういう突っ込み合戦は、この際、どうでもいいとして
実行結果のみに疑問を感じてください
普通は、こういうオブジェクト作成はしないものですが、
あえてmain関数の外のしかも、ソースの最後にオブジェクトを作成してクラスを呼び出しています
ですが、結果はクラスの方が先に表示されている
まさかC++やろうとしているのにC言語理解していないとかは無いよね?
もしかしてグローバル変数はintしか存在しないとか言うんじゃ
これは簡単に説明できるようなことではないと思います C++をかなり熟知しているレベルでないと解けないレベルだと思います 難易度強の質問だと思ってください なので、無理に触れる必要はありません 解かる人だけ、この話題に触れてください
>>887 リンカさんはそこまで頭良くないんだよ
許してやんなよ(´・ω・`)
C言語を知らなかったとしても、高校生以上の思考力があれば実行結果から仕様を類推することはできるだろうに。 「プログラムは上から順番に実行される!」と思ってあるあたりスクリプト言語出身者なのは間違いないだろう。
笑ったら負け ってやつだよね? 笑うなよニヤニヤしても負けだよ
>>891 いや、コンパイラとインタプリタのごく基本的な違いなんだが。
「世界でいちばん簡単なC言語のe本」の第一章で説明されてることだ。
つまり君の質問は「世界でいちばん簡単なC言語のe本」の第一章レベルってことさ。
みんなに笑われる理由は理解できたか?
グローバルスコープのオブジェクト
ブロックスコープのstaticなオブジェクト
ブロックスコープのstaticでないオブジェクト
のコンストラクタを説明せよ、
ならば情報系学部のレポートの課題にはなるが、
>>891 は公立中学のパソコンクラブの勉強会でやるレベル
>>896 もういいわ・・・。
非局所オブジェクトの初期化や局所静的オブジェクト
ストリーム、jis x3014の自立処理系や
フリースタンディング環境あたりの会話を期待していたのだが
こんな低レベルな人しかいないところで
こんな話題を振った俺が愚かでした・・・
次元が違い過ぎる話題を振ると こういうことになるというわけですね 勉強になりました
下らん釣りだったな…
今北 C++以前に、Cの常識だろ そもそも呼ばれるのが_main かって?Windowsなら、_DllMain@12 かもしらんだろう 実行ファイルのエントリポイントに飛ぶ以前に、DLLが実行されることまで意識していい C/C++erである以上、常に、吐き出されるバイナリは意識するべきだと思うんだ エントリポイントは自分で指定して、自分で処理したまえ 処理系に任せるのは自由だが、使ってるCRTの実装くらい目を通すべき
負けたw
>>882 頼むから、釣りだったと言ってくれ (w
>>894 大負けしたことを、告白せざるを得ないな
>>882 main関数のあと…?
グローバルでTESTオブジェクト作ってるんだから、そっちが先にインスタンス化されてコンストラクタが呼ばれる
それらが終わってからmainだから、なにもおかしくないと思うんだが…
>>904 乗り遅れはそんな当たり前のレスではダメ
もっとひねったレスをするように
間違えてC言語スレで質問してるし本当に釣りじゃないんじゃ。 でもこれ頑張って専門用語持ち出してきましたって演出にも見える。 中身の程度が低すぎるけど・・・。
>>905 そうだな。乗り遅れすぎの上に空気読めない痛いレスにワロタだよな
ドカタは状況把握なんてできない底辺だからな
本当に空気読め無い人がなんか言ってると全然ワロエナイ。
なんか異常にのびてると思ったら、キチガイが湧いて暴れていたのか
サブクラスで受け取った引数を加工してからスーパークラスへ渡したいんですが スーパークラスのコンストラクタへ引数を渡す手段はメンバイニシャライザ以外にありませんか? あとサブクラスのコンストラクタから明示的にスーパークラスのコンストラクタを呼び出したときに サブクラスのコンストラクタが終わった直後にスーパークラスのデストラクタが働いたんですがどういうことですか?
class sub { sub() };
>>882 いや、正直この発想はなかった
冷静にいえば、慣習に背く「わかりにくい」コードだが、発想の転換と言えなくはない
後輩か誰かを釣るのに使おうwww
複数のファイルをコンパイルするときは初期化順序把握してないとトラブル起こすっしょ
>>910 >メンバイニシャライザ以外にありませんか?
はい
>どういうことですか?
見間違えたんだろ
何が「慣習」で、あれのどこが「発想の転換」なのかと アホか
知らねーよ
↑これなんで?
Sub::Sub(int num) { Base::Base(num + 77); } やっぱこのパターンかよ!
>Base::Base(num + 77); Javaプログラマとかがやりがちだが C++では、これは一時オブジェクトを作って捨てているだけ
そう書いてるじゃねえか
>>922 ありがとうございます。
このタイミングで一時オブジェクトが作られることにはどういった都合や利点があるのですか?
いや都合とか利点じゃなくて、あなたがそう書いたからそうなってるだけ
>>925 この仕様が何らかの実用的な用途を想定して設計されたものなのか、
さる密接な別の仕様との整合性を図るためにやむなく生じたものなのか、ご存知ですか?
927 :
デフォルトの名無しさん :2013/08/15(木) 00:49:11.53
ムーブといってだな・・・
サブクラスないでベースクラス作れないと困ることもあろう
>>928 どういうことですか?
単にサブクラス内でベースクラスをnewする場合と違いますか?
>>926 クラス名(引数) で一時オブジェクトを作れる仕様がある。
基底クラスの初期化タイミングは固定(派生クラスのメンバより前)なので、
コンストラクタ本体内のどこでも書けるこの構文を割り当てることもできない。
>>929 newすることも出来るし、スタック上に作ることもできるってだけだよ
やっぱID欲しいわ
>>930 最初はコンストラクタも単なるメンバ関数として派生クラスから呼び出しが可能だと思っていました。
この仕様はあまり使われないのですか?
>>931 Base base = Base::Base();
このように書けるんですね。今知りました。
Base base;
でもスタック領域で実体化するにしてもこの方が早そうに見えますが。
>>933 コンストラクタは単なるメンバ関数じゃない。例えば、明らかに2度呼ぶことはできない。
使い捨てのオブジェクトに名前をつけるのは面倒。
間違ってC言語なら俺に聞けに書いてしまったのですが、 質問というかちょっとお聞きしたいのですが、 次のコードがVSとC++Builderで結果が違うのです。 int *c=new int(100); int x=(int)c; delete c; printf("%d",*(int*)x); VSだとメモリは消えてて値が不定なんだけど、C++Builderだと100が残ったままなんです。 これBCCはちゃんとメモリ解放してるつもりなんですかね?
delete後の領域なんぞ気にしちゃダメよ(´・ω・`)
ちゃんと消えてるのか確認してみたら同じ値のままだったから本当に消えてるのか不安になって仕方なかったんだ(´・ω・`)
実際にはすぐには消えないからそんなこと気にしてもしょうがない
保障されていたものが保障されなくなっただけ いつ書き変えられるかもしれない領域だから使ってはいけない 自動変数のポインタを返しても同じようなことが起きる
>>919 http://codepad.org/383QmLeq こう書いていれば2つ目が作られていることにも気がついたろうに
>>936 そもそもメモリは消えない
本当にレガシーなシステムでは言語のメモリ管理機構がその領域を再割当て可能として別の所に記憶するだけ
仮想メモリなシステムでもメモリ管理機構がその領域を上位のシステム(OS)に返却しない限りは大抵同じ
そして、仮想メモリなシステムでメモリ管理機構がその領域を返却してあった場合、セグメンテーション違反でプログラムが落ちる
>>936 ↓と同じ。 delete 後の *c の読み取りで未定義動作。何を確認してることにもならない。
int *c=new int(100);
delete c;
printf("%d",*c);
>>936 メモリは解放されても、リセットされるわけじゃない
リセットされてほしければ、そのように書かなきゃいけない
リセットの必要がなければ、その分実装者の責任で省力化できるともいえる
それがCってものだろう
もしかして: 解放だけじゃなく、確実にクリアしたい?
たとえば、SecureZeroMemory ってのをぐぐってみ
>>940 補償
保障
保証
使い分けられないクズは引っ込んでろ
なぜおかしいのか説明できないなら情報量ゼロ クズは引っ込んでろ
みんながみんな説明できるならそれこそ情報にならないじゃないか なかなか説明が出てこないから情報としての価値がある
>>945 三種類あって、それを使い分けられないのはクズである
と言う情報が得られただろ
そういう事がわから無いと一生クズのままだぞ
>>948 そんな事はこのスレでドヤ顔で講釈たれることじゃない
ただのIME変換ミスだろ
プログラマはクズがやる底辺ドカタ職業
>>944 が使い分けられるような奴は底辺職業のドカタにはいないのに。
すまんこすってたい
952 :
デフォルトの名無しさん :2013/08/15(木) 16:17:35.50
自宅警備員の方は高貴というより末期
わから無いに突っ込んでやれよ
生涯を通じての自己実現 人生は多様であることを知る 職業に貴賎なきことを学ぶ 社会のため、人の為になる人生 自分が満足できる人生
打ち消しの「ない」は「無い」とは書かないよな
そんなこと知ら無い
日本語歴はまだ数年なので知ら無い
クズはC++に関連ないことのほうがはるかに饒舌になる おれら、やっぱクズだよな
C++が好きな奴って、なんだかんだで自分で極めようという志はあるからね 質問にあがるといったら、これからC++やる奴か、 ハマってしまってはたから見たらアホみたいなとこで詰んでる奴とかか
961 :
デフォルトの名無しさん :2013/08/15(木) 18:04:48.78
詰むところを忘れたわけじゃないからね まともな詰みかたしてる人を見下したりはしないよ
>>944 重箱の隅をつつく事でようやく低い自尊心を保てているクズ
同じ屑なら叩かにゃソンソン (荒らしの論理)
自宅警備保障
ublas厨すぎて、push_backが必要な状況ですら、サイズ計量して詰め込む二重ループか、 ublas::vector<T, std::vector<T> >してしまいます どなたか僕を遅延演算の輪廻から解放してください
>>965 いいえこれからも奮って
テンプレートのくその山を大量生産してください
初歩的な質問なんですがAクラスとそこから派生したBクラスがあってa.h a.cpp b.h b.cppがあるとします このときb.hがa.hをインクルードするのは当然だと思いますが、ソースファイルはどうなんでしょうか? Bクラスを使いたいときb.cppがa.cppを内包していなければ、プロジェクトがインクルードしなければならないファイルは b.h b.cppに加えてa.cppが増えて直感的ではないように思います しかしb.cppにa.cppをインクルードすると、BクラスだけでなくAクラスも使いたい状況で a.h a.cpp b.h b.cppをインクルードしたときa.cppの多重定義が起こりエラーになります b.h b.cppだけをインクルードすればいい話ですがAクラスのファイルが隠蔽されてしまってこれも直感的ではありません
そもそもまずb.cppをインクルードする必要なんてないが
あれ、VC++で外部シンボルが未解決と言われたので定義をインクルードしてないのが問題かと思ってました
一回クリーンしたら動きました なんだったんだろう
>>967 >>969 のように書けば済むように、ヘッダ・実装を書き分けていけばいい
そういう考え方。
荒れやすいな
これを荒れと認識する人は匿名掲示板向いてないよ TwitterやFacebookで上っ面だけ丁寧な連中と付き合った方が幸せになれるよ
荒らし対策が必要だな
>>974 同意
上っ面丁寧な連中の方が、ちゃんとした回答を出す
匿名なんて、ひけらかして威張りたいけど、突っ込まれてバカ認定されるのを怖がってるクズの吹き溜まり
ここも2、3冊読破した程度の学生が知識を試してんじゃないのかな、内容的に
Twitterは有名ブロガーとかOSSで活躍する有名人とかが看板掲げて発言するから そりゃあ平均レベルは高くなるよ。 問題は、見つけてもらえるか、絡んでもらえるかだなw 上手く出会えて有名人の興味を惹ければ超有用なアドバイスを貰えるけど、出会 えないとぼっちの独り言状態で激烈寂しい思いをするorz
色々間違ってるぞ
同じクズならクズ程でも役に立つクズがいいのは同意するが 2chもコツを掴めば欲しい情報を引き出すのは簡単だぞ
コミュニティ破壊してでも情報得ようなんて言う短絡的な奴が増えたんだよ。
>>974 そうだよな。ここは底辺階層向でこれが普通で荒れてはいない
類は友を呼び、底辺階層向になったって感じだろう
底辺階層向って状況認識できないから荒れている思うのかな
上級者にならんがためには、上級者になる必要があるんだよな
t
>>979 あやふやなところをドヤ顔で書けば、間違いを指摘してくれる便利な人達がいるからな
人間やっぱ性悪なもんで、教えて下さいと言うよりも、コイツを潰したいと思わせた方が、隙の無いレスが返ってくる
それって質問より難しくない?
炎上学習法?
板が荒れる+質問者の人格もどんどん荒んでいく まさに黒魔術的な手法
>>984 それやろうとしたら、あやふやなところ以外はちゃんと書いとかないとダメなんだが、大抵全般的にあやふやだから、全般的に突っ込まれて撃沈してるだろ (w
炎上学習法は俺が最初に言い出したテクニックだから これいじょうやるならライセンス料とるが?
あ
炎上マーケティングをパクっただけだろ
うめ
梅
焼畑農業なんて大昔からあるだろ 原始人ども
俺が最初だ
>>996 トリップつけろ、この軟弱者卑怯者、こっちはトリップつけてコード晒してんだ、見習ってもらいたいね、氏ね
998 :
デフォルトの名無しさん :2013/08/17(土) 13:25:20.55
猥褻物陳列罪の犯罪者が何を偉そうに
>>999 こいつそのスレにも出入りしてたのか
そのスレ俺も出入りしてるから嫌な感じだわ
休日にショッピングに行ったら地元の知り合いにばったり遭遇しちゃったような気分
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。