C++相談室 part103
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/15(土) 23:14:35.92ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part102
http://toro.2ch.net/test/read.cgi/tech/1368314383/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.84【環境依存OK】
http://toro.2ch.net/test/read.cgi/tech/1367137639/
■長いソースを貼るときはここへ。■
http://codepad.org/
http://ideone.com/
0153デフォルトの名無しさん
2013/06/24(月) 13:16:40.36ご指摘通り、配列を実体化してませんでした。。。忘れてました。
どうもありがとうございます!!
0154デフォルトの名無しさん
2013/06/24(月) 13:40:54.89つかえるようにしかた教えてください。
0155デフォルトの名無しさん
2013/06/24(月) 14:41:26.54tdmつかってないけど、std::int64_tなオチじゃね?
0156デフォルトの名無しさん
2013/06/24(月) 14:59:41.360157デフォルトの名無しさん
2013/06/24(月) 15:06:14.54ならstd::付けなくても大丈夫じゃね?
0158デフォルトの名無しさん
2013/06/24(月) 15:08:08.990159デフォルトの名無しさん
2013/06/24(月) 15:10:29.91手持ちのg++ 4.4.3だとこのオプション付けないとワーニング表示するよ
0160デフォルトの名無しさん
2013/06/24(月) 15:13:00.160161デフォルトの名無しさん
2013/06/24(月) 15:28:43.64別に規格違反ではない
0162デフォルトの名無しさん
2013/06/24(月) 15:33:26.72あんさんの使っているコンパイラーは何にょ?
0163デフォルトの名無しさん
2013/06/24(月) 15:35:52.74マクロで抑制されているとなると、
Windowsで32ビットバイナリの時は使えないとか?
0164デフォルトの名無しさん
2013/06/24(月) 15:38:50.39つけてマンスリーよ
0165デフォルトの名無しさん
2013/06/24(月) 15:45:58.64お前、どうせ後で
「みなさんがいつ正解に辿り着くか試していました。バカばっかですね」
とか言うつもりだろ?
0166デフォルトの名無しさん
2013/06/24(月) 15:47:21.580167デフォルトの名無しさん
2013/06/24(月) 15:50:43.52それをいうのは俺の仕事だ 邪魔すんな
0168デフォルトの名無しさん
2013/06/24(月) 18:40:26.30馬鹿には使えないんです。諦めて下さい。
0169デフォルトの名無しさん
2013/06/26(水) 05:05:43.88プリミティブ型は明示的にコンストラクタ呼ばないと初期化されないと思ってるんだけど
あとSTLで明示的にコンストラクタを呼ぶ呼ばないって規約あるの?
0170デフォルトの名無しさん
2013/06/26(水) 05:22:29.12お前は毎日家畜小屋でもうろついているのか?
0171デフォルトの名無しさん
2013/06/26(水) 07:09:00.190172デフォルトの名無しさん
2013/06/26(水) 07:12:23.33テクニカルな
ロコモーション
0173154
2013/06/26(水) 10:05:42.59cstdintではstd::をつけても使えません。
cstdintではなぜつかえないのですか?
教えてください。
0174デフォルトの名無しさん
2013/06/26(水) 15:11:46.23VC++のデバッグバージョンの話じゃないか?
0175デフォルトの名無しさん
2013/06/26(水) 15:45:31.88>>168
0176デフォルトの名無しさん
2013/06/26(水) 21:39:15.78int k;不定
int k();関数宣言
int k{};ゼロ
int k = {};ゼロ
0177デフォルトの名無しさん
2013/06/26(水) 21:42:53.70○初期化できる
0178デフォルトの名無しさん
2013/06/26(水) 21:55:50.15そういう奴はマルチユーザーOSではユーザーモードへからカーネルモードへのメモリ確保要求は0埋めして返すという暗黙のルールを知らずに勘違いした観測結果を見てる
0179デフォルトの名無しさん
2013/06/26(水) 21:58:29.86あ、カーネルの暗黙のルールとかどうでもいいです
ここはOSスレじゃなくて言語スレなんで
0180デフォルトの名無しさん
2013/06/26(水) 22:04:28.53「言語仕様的に考えて自動初期化なわけねーだろ馬鹿」
ってことだろ察しろよ
0181デフォルトの名無しさん
2013/06/26(水) 22:08:02.81言語理解能力のないバカ
0182デフォルトの名無しさん
2013/06/26(水) 22:14:01.40OSカーネルとかとんちんかんな
関係無い話を持ち出すなってことだよ
理解できないなんて残念な奴だなー
0183デフォルトの名無しさん
2013/06/26(水) 22:31:31.540184デフォルトの名無しさん
2013/06/26(水) 22:47:56.740185デフォルトの名無しさん
2013/06/26(水) 22:52:37.460186デフォルトの名無しさん
2013/06/26(水) 22:54:13.02デフォルト引数でゼロ初期化される
C++11はゼロ初期化されない
0187デフォルトの名無しさん
2013/06/26(水) 22:56:28.170188デフォルトの名無しさん
2013/06/26(水) 22:58:04.8403・・・デフォルトコンストラクタを増えた個数回呼び出す
11・・・デフォルトコンストラクタを1回呼び出し、それをコピーコンストラクタで広げる
ような感じだったような
0189デフォルトの名無しさん
2013/06/26(水) 22:58:51.940190デフォルトの名無しさん
2013/06/26(水) 23:00:04.17言語理解能力のない馬鹿
0191デフォルトの名無しさん
2013/06/26(水) 23:01:02.76規格票持ってんのか?ああ?
0192デフォルトの名無しさん
2013/06/26(水) 23:06:13.41違う
初期値指定付きのresizeは03も11も変わらない
03には本当の意味での初期値指定なしのresizeは存在せず、
一見初期値指定なしに見えるものはデフォルト引数が使われているだけ
11には本当に初期値指定指定なしのresizeが存在する
この場合は増えた要素をアロケータで初期化するのだけども
POD型では初期化されないようになっている
(もちろん初期化するようなアロケータを指定すれば初期化されるようにもできるが)
0193デフォルトの名無しさん
2013/06/26(水) 23:21:11.04いや、PODでも値初期化されるだろ。
0194デフォルトの名無しさん
2013/06/26(水) 23:23:19.93いくらなんでもそんな危険な変更が入るわけが無い。
0195デフォルトの名無しさん
2013/06/26(水) 23:24:42.07初期値指定なしのシグニチャのがPODをゼロ初期化しなかったら互換性ぶちこわしだもんね
0196デフォルトの名無しさん
2013/06/26(水) 23:29:52.04PODの場合memsetが使えるようになったというだけだろ
0197デフォルトの名無しさん
2013/06/26(水) 23:33:37.650198デフォルトの名無しさん
2013/06/26(水) 23:36:11.32あれ、昔試した時はそうならなかったような……
気のせいか
0199デフォルトの名無しさん
2013/06/26(水) 23:38:39.45なんか理由があるんでしょうか。
0200デフォルトの名無しさん
2013/06/26(水) 23:40:01.510201デフォルトの名無しさん
2013/06/26(水) 23:41:16.770202デフォルトの名無しさん
2013/06/26(水) 23:41:37.390203デフォルトの名無しさん
2013/06/26(水) 23:56:28.59C++03でも値初期化されたPODによるuninitialized_fill()をmemset()に最適化することは可能だよ。
0204デフォルトの名無しさん
2013/06/27(木) 00:00:22.80std:string str;
strに8byte毎に16進数での追加の方法がわかりません
たとえば、char str2[50];
str2 = 0x61 のように入れたいです。
str.append('0x61'); のようにすると、コンパイルエラーが発生します。
おねがいします。
0205デフォルトの名無しさん
2013/06/27(木) 00:09:14.97> str2 = 0x61 のように入れたいです。
std::string 以前に、そんなことできないから。
やりたいことが何なのかさっぱり。
0206デフォルトの名無しさん
2013/06/27(木) 00:09:16.920207デフォルトの名無しさん
2013/06/27(木) 00:52:31.09「charをstringに変換したいです><」
0208デフォルトの名無しさん
2013/06/27(木) 01:05:23.44コンパイルエラーでできませんでした。
レスありがとうございました。
str.append(1,'\0');
str.append(1,0x61);
でコンパイル通りました。
お騒がせしました。
0209デフォルトの名無しさん
2013/06/27(木) 01:09:12.68まあどうでもいいや
0210デフォルトの名無しさん
2013/06/27(木) 01:14:50.840211デフォルトの名無しさん
2013/06/27(木) 01:18:02.150212デフォルトの名無しさん
2013/06/27(木) 01:37:17.070213デフォルトの名無しさん
2013/06/27(木) 03:27:27.34未初期化のゼロを勘違いしやすいんだと思うけど
記憶が正しければ言語仕様は>>176でよくて、ライブラリに規約があるのかどうかが分からない
>>192
それって処理系の実装の話?仕様の話?
他にはpairのctorで初期化してるかどうかでmapの使い方変わるし
誰かおせーて
0214デフォルトの名無しさん
2013/06/27(木) 08:11:25.42コンテナ要素は 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
0215デフォルトの名無しさん
2013/06/27(木) 12:13:06.330216デフォルトの名無しさん
2013/06/27(木) 12:16:38.33他のヘッダからインクルードされてるからだろう
そういうのは可搬性ないよ
0217デフォルトの名無しさん
2013/06/27(木) 12:18:02.920218デフォルトの名無しさん
2013/06/27(木) 12:30:24.830219デフォルトの名無しさん
2013/06/27(木) 12:34:43.10ありがたまきん
0220デフォルトの名無しさん
2013/06/27(木) 13:09:24.91class LongBit {
private:
//略
public:
//略
LongBit operator*(unsigned a);
//略
};
LongBit LongBit::operator*(unsigned a)
{
//略
}
こう書くとエラーになります(略の部分はちゃんと書いてます)。どうすればよろしいでしょうか?
0221デフォルトの名無しさん
2013/06/27(木) 14:02:44.65悪くないようだ他所で問題があるのでは?
http://codepad.org/GyGGpLck
0222デフォルトの名無しさん
2013/06/27(木) 14:07:38.78http://codepad.org/iwKKyZFZ
0223デフォルトの名無しさん
2013/06/27(木) 14:43:43.59&がなくてconstがないので使い方に制限がある
0224デフォルトの名無しさん
2013/06/27(木) 16:26:03.87なるほど、デフォルトのアロケータがコンストラクタ呼ぶのか
pairの話に戻るけど、これ自身はコンテナではないからそのメンバはアロケータを経由しないわけだけどそれらの初期化についてはどう?
手元の処理系では概ね初期化してるようだけど
pair::pair() : first(), second() {}
というのもPODなら簡単だけどPODを持つ非PODが面倒で、そのコンストラクタで初期化してやらないとPODのゼロ初期化を呼べなくなるよね
struct A { A(){} int a; } a = A();
// uninitialized a.a
0225デフォルトの名無しさん
2013/06/27(木) 19:11:05.30pairのデフォルトコンストラクタはfirstおよびsecondを値初期化することになってる
0226デフォルトの名無しさん
2013/06/27(木) 19:35:31.580227デフォルトの名無しさん
2013/06/27(木) 21:17:45.10本気で質問する気があるなら
エラーメッセージも書くか
エラーが再現する最低限のコードを
codepadかideoneに貼れksg
0228デフォルトの名無しさん
2013/06/27(木) 22:19:46.440229デフォルトの名無しさん
2013/06/27(木) 22:21:37.170230デフォルトの名無しさん
2013/06/27(木) 22:42:57.76少しは自分で規格読もうとしろよ。
0231デフォルトの名無しさん
2013/06/28(金) 04:44:32.410232デフォルトの名無しさん
2013/06/28(金) 05:00:33.01その関数を呼んでもメンバ変数が変更されないことを表す
0233KUSO KOTE
2013/06/28(金) 05:31:45.10struct 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は付けられない。
0234KUSO KOTE
2013/06/28(金) 05:40:14.800235デフォルトの名無しさん
2013/06/28(金) 05:54:24.63class X { void f() const && {} };
X x;
move(x).f();
→
X 「const &&」 tmp = move(x);
X const * const _this_ = &tmp;
0236デフォルトの名無しさん
2013/06/28(金) 07:35:19.130237デフォルトの名無しさん
2013/06/28(金) 08:01:57.390238デフォルトの名無しさん
2013/06/28(金) 08:27:01.89構造体って言えばいいのに
0239デフォルトの名無しさん
2013/06/28(金) 08:34:18.80C++:構造体 ⊇ POD
0240デフォルトの名無しさん
2013/06/28(金) 08:38:46.32規格の何ページ目で定義されるのか
伺おうか
0241デフォルトの名無しさん
2013/06/28(金) 09:24:32.620242デフォルトの名無しさん
2013/06/28(金) 11:37:19.950243デフォルトの名無しさん
2013/06/28(金) 12:11:10.86JIS X3014:2003なら122ページ
ISO/IEC 14882:2011は中見てないけど218ページくらいかな
0244デフォルトの名無しさん
2013/06/28(金) 12:34:16.40intとかcharもPODだよ
0245デフォルトの名無しさん
2013/06/28(金) 13:43:02.68そのままコピー出来ない参照(配列・ポインタ)と区別するための言葉
0246デフォルトの名無しさん
2013/06/28(金) 17:02:25.24初耳だな
0247デフォルトの名無しさん
2013/06/28(金) 18:13:21.13規格は読んでない
0248デフォルトの名無しさん
2013/06/28(金) 19:10:56.54テキトーなこと言うなよ
書いてねーぞ
0249デフォルトの名無しさん
2013/06/28(金) 20:02:25.94いずれも 〜 class から 〜 union を除いたものとされる。
ページ番号は 217 でいいのかな?
0250デフォルトの名無しさん
2013/06/28(金) 22:04:04.06で、構造体(structure)の定義はどこ?
0251デフォルトの名無しさん
2013/06/28(金) 22:19:19.050252デフォルトの名無しさん
2013/06/28(金) 22:37:26.14■ このスレッドは過去ログ倉庫に格納されています