[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/19 07:59 / Filesize : 267 KB / Number-of Response : 1031
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part131



1 名前:デフォルトの名無しさん(ワッチョイ 3b96-ov1m) mailto:sage [2017/07/29(土) 11:28:28.97 ID:o30VDF4g0.net]
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part130
mevius.2ch.net/test/read.cgi/tech/1490917669/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured

345 名前:片山博文MZ mailto:sage [2017/08/26(土) 00:39:36.17 ID:HPL6ZAk0d.net]
qiita.com/ShirakawaYoshimaru/items/058484a8fb584eb452b2
これを貼るだけだったな。

346 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 03:28:35.80 ID:KpMB1a9f0.net]
>>332
operator newって仮想関数にできなくない? なんでオーバーライドが的確なの?

347 名前:デフォルトの名無しさん [2017/08/26(土) 08:56:30.09 ID:jcvKb5O50.net]
>>336
言い争ってなんかいねえぜ
一部のアフォどもをこっちはスルーしてるんで争いになってない

348 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 17:00:12.26 ID:dtKp7Pu80.net]
>>334
排他的くねなぜならシグネチャが変わらないオーバーロードは無いしシグネチャが変わるオーバーライドもこれまた無いからだ

349 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 17:19:10.37 ID:XR3UemNVr.net]
そうか?
https://ideone.com/VOwt42
これはオーバーロードかつオーバーライドだと思うが
オーバーロードは特定の関数について言及しているのではなく同一スコープに同一の名前が複数存在する状態を指すものだと思っとりました

350 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 18:47:41.02 ID:O53zOlu10.net]
>>341
それは
上の方はオーバーライド

下の方はオーバーロード(を追加している)
でしょ
関数単位で見たら排他だと思う

351 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 19:44:51.20 ID:dtKp7Pu80.net]
>>342
あー左様かvoid B::f(int)のオーバーライドとf()のオーバーロードが同時にありえるのか、
完全に排他的(背反)というわけでもないな

ただしそれぞれ独立な概念とは言える
なぜなら下記の4通り全ての組み合わせが有り得、互いの成立要件に他方の成立の真偽が関係しないだから、
1. オーバーライド∧オーバーロード
2. オーバーライド∧¬オーバーロード
3. ¬オーバーライド∧オーバーロード
4. ¬オーバーライド∧¬オーバーロード

352 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 19:47:02.66 ID:dtKp7Pu80.net]
訂正
△: ただしそれぞれ独立な概念とは言える
○: ただしそれならそれでそれぞれ独立な概念とは言える

353 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:26:52.66 ID:rkE5GYva0.net]
同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?

そんなに難しい話じゃないはずだった気がしたんだけどな。



354 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 23:42:30.55 ID:eHXsO5oX0.net]
>>345
usual な operator new は、いつも
void* operator new(std::size_t);
というシグネチャなのに、なぜオーバロードなのか

という話題だったのでは?

355 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 00:10:24.07 ID:NCmIfXRWr.net]
「同じ名前の関数で、引数が同じならオーバーライド、 引数が違えばオーバーロードだよ?」
これまた珍説を

356 名前: mailto:sage [2017/08/27(日) 00:50:06.39 ID:Cp6PBSjn0.net]
>>347
>引数が違えばオーバーロードだよ?
演算子のオーバーロード

357 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 00:54:36.33 ID:DagGpBhC0.net]
おまいらのアタマがオーバーフロー

358 名前:デフォルトの名無しさん [2017/08/27(日) 02:06:53.19 ID:99717IEt0.net]
みんな人に説明できるだけのまともな言語能力を備えてから来てくれ
あとクソみたいな反論をするのもやめよう

359 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 07:10:35.78 ID:NCmIfXRWr.net]
>>348
それは>>298>>319を読んだ上で物申してるのかね

360 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 10:16:57.94 ID:FD5yZ+sq0.net]
2010年にも同じような話あったみたいね
https://cpplover.blogspot.jp/2010/08/overloadoverridehiding.html

361 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 13:59:49.66 ID:nap9vlyD0.net]
constオブジェクトのデストラクタって
一般に中で非constメソッドを呼んでいるのに
なんで合法に呼び出されるの?
それとも合法に見えるのはVC++固有?
プロセスが死ぬまで破棄されないのが正しいロジックなんじゃないの

362 名前:はちみつ餃子 mailto:sage [2017/08/27(日) 15:08:55.59 ID:hmah67i90.net]
const の考え方には logical const と bitwise const があって、
logical const を実現するために言語としては bitwise const を基本として要求してる感じ。
logical const ってのは論理的な const 性で、
bitwise const ってのはビットパターンとして不変ってことね。

mutable キーワードを付ければ const なメンバ関数からも操作できるデータメンバを
作れるけど、これは bitwise const でなくてもよくなるだけで
logical const であることは要求される。
(その性質を満たすようにプログラマが配慮しないといけない。
コンパイラは面倒みてくれない。
reinterpret_cast と同じくらいには危険で面倒くさいと思う)

寿命が尽きたオブジェクトにはアクセスは許されないから
もはや logical も bitwise も関係なく const 性は無意味になる。

363 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 15:29:34.75 ID:nap9vlyD0.net]
>>354
>寿命が尽きたオブジェクトにはアクセスは許されないから
>もはや logical も bitwise も関係なく const 性は無意味になる。
これはだいたいワカタ

前半はわからん
bitwise const でないオブジェクトがROMに割り付けられたり、とか、
bitwise const でないオブジェクトがmemcpy()的手段で同じビットパターンに繰り返し上書きされるみたいな
処理があったりするとbitwise constでないことは致命的だが
それ以外のケースではconstといいつつクラス内部ではmutableな扱いであっても全く実害無いんじゃ…
ていうかそもそもC++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が、、



364 名前:はちみつ餃子 mailto:sage [2017/08/27(日) 16:21:07.86 ID:hmah67i90.net]
>>355
logical const であれば性質として充分だよ。
だけど、それをコンパイラがチェックすることは出来ないから、
原則としては bitwise const を要求して、
それがちゃんとできてなけりゃエラーも出す。

だけど、 bitwise でなくても logical に出来る場面では
プログラマの責任でやるよっていうのを mutable キーワードで表すってわけ。

365 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 16:23:29.96 ID:Pcpci17F0.net]
ルールを増やせば増やすほど使ってもらえない。

366 名前:デフォルトの名無しさん [2017/08/27(日) 16:50:02.45 ID:99717IEt0.net]
しかし現実には使われているもよう

367 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 16:52:16.64 ID:OhTIHz5/0.net]
おい、mutableなんてキーワード初めて知ったぞw
ググってみたらC++11から導入されてたんだな知らんかった、、、

368 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 16:55:16.46 ID:7+G8dT33M.net]
またまたご冗談を

369 名前:はちみつ餃子 mailto:sage [2017/08/27(日) 17:26:13.10 ID:hmah67i90.net]
>>359
ANSI で規格化された最初から有ったがな (´・ω・`)

370 名前:デフォルトの名無しさん [2017/08/27(日) 19:19:01.73 ID:+rBIMmXP0.net]
>>359
いやいやおいおい…

371 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 22:57:23.47 ID:epttQBO0r.net]
「C++の非PODオブジェクトに対するconstはbitwise constなのかかなり疑問が」
標準レイアウトではないconstexprなオブジェクトはビットレベルでconstなのだろうか
constexpr struct A { constexpr A()=default; int m=1; private: int n=2; } a;
確かに疑問だ

372 名前:デフォルトの名無しさん mailto:sage [2017/08/27(日) 23:06:36.65 ID:Pcpci17F0.net]
どんどんキーワードが増えるのは思いつきで仕様を決めてるからだ。
無能SEの下のプロジェクトではよくあること。
50年は仕様を追加しないつもりで仕様を決めてほしい。

373 名前:はちみつ餃子 mailto:sage [2017/08/27(日) 23:35:20.73 ID:hmah67i90.net]
コンピュータを取り巻く事情は予想の斜め上をいく形でどんどん変わるのに言語だけのんびりしとれるかいな



374 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 00:12:36.48 ID:OtmMiMVk0.net]
永久に仕様が追加されない言語なんてたくさんあるから好きなのを使いなよ
機能が必要になった背景やそれを追加することが適当だという根拠まで知ってろとは言わないからさ

375 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 00:24:42.42 ID:JtlNpsV60.net]
雑魚に上から言われる筋合いはない。そんな態度だから囲まれて職質されるんだよ。

376 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 00:26:53.59 ID:GiFa6ZsP0.net]
つ、追加しなくても1.5年待てば倍速くなるもん…!

ていうかメモリバリア周りの扱いが未だに規格化されていないのは言語としてはお寒い状況だといわざるおえない
ゆくゆくはOpenMPIを正式に取り込んでキャッシュスヌープ無しのメニーコア環境でも
最高のパフォーマンスを発揮できるだけの選択肢をプログラマに提示し、
さらにはGPGPU対応もしてホスイ、

377 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 00:29:36.83 ID:GiFa6ZsP0.net]
スマンOpenMPIはOpenMPのつもりで言った!

378 名前:デフォルトの名無しさん [2017/08/28(月) 01:19:26.30 ID:83bJD8zl0.net]
openmpみたいなマクロまみれよりtbbのほうが好き

379 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 01:23:37.61 ID:JtlNpsV60.net]
そんなに新機能を追加したいなら、新しく別言語を創れ。JavaやC#みたに成功して普及した事例はいくらでもある。
一度普及した言語に、碌に実務でコードも書いたことないような輩が後からやってきてデタラメな糞仕様を追加するんじゃない。

380 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 01:31:42.56 ID:OtmMiMVk0.net]
後から来た輩(ビャーネ・ストラウストラップ)

381 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 01:37:29.69 ID:JtlNpsV60.net]
CとC++が同じ言語と思ってるとは、さすが見込みどおりの雑魚。

382 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 02:11:44.25 ID:nC18rNgy0.net]
実務でコード書く人=Windowフォームにボタンを乗せる仕事の人

383 名前:はちみつ餃子 mailto:sage [2017/08/28(月) 03:06:17.85 ID:yPLR2tUq0.net]
ライブラリの蓄積もあるからさ。 負債の蓄積とのバランスだよねー。
ときどき Go とか Rust とかみたいなのが出てきて一新してくれりゃいいんだけど、
C++ はともかく C はいつまでも死なない気がする。



384 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 07:31:44.71 ID:GiFa6ZsP0.net]
別に新機能のほしいものリストを無秩序に書き連ねたわけではないもん;;
C++はSimulaの代替品として登場した時点から実行時パフォーマンスの追求を意識していたし、
理解しやすさなら他の言語を選択すればよい昨今においては
特に実行時パフォーマンスの追求こそがC++の存在意義として強調されるべき
テンプレートによるメタプログラミングに最高の効率を阻害する穴があれば塞がれねばならないし、
最適化がほっといたら中途半端にとどまるケースには尻を叩くキーワードが追加されねばならないし、
そのときどきのアーキテクチャーの詳細に立ち入ってでもあらゆる実行時パフォーマンス追求手段が
プログラマに提示されねばならない
インテリセンスがまともに働かないとかテンプレートの分割コンパイルがもはや完成しないバベルの塔だとか
言語規格が変わり続けて解説書が分厚くなる一方だといった側面の不調法はそうであってこそ許容される、

385 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 07:36 ]
[ここ壊れてます]

386 名前::18.26 ID:GiFa6ZsP0.net mailto: 機械の方が人間より賢くプログラムするようになってアセンブラが滅びたら
Cも滅びる気がする
[]
[ここ壊れてます]

387 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 07:36:46.75 ID:96+DvSIX0.net]
ウニファイドコールシンタックスを直ちに入れるのです。
コードサジェストが爆発してもいいじゃない。

388 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 07:43:38.48 ID:96+DvSIX0.net]
>>377
機会が賢くなったら、あらゆる言語をCに一回トランスコ―ドするようになる気がする。
そこでパフォーマンスチューニングしてコンパイル。
人間だとコストかかってできない方法。

389 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 07:58:00.50 ID:GiFa6ZsP0.net]
中間言語とか3番地コードと条件判断とgotoで必要にしてほぼ十分なのでは…

390 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 08:00:37.13 ID:96+DvSIX0.net]
>>380
あーそんなもんか。
それじゃ、アセンブリにした方が早いね。
もしくはあらゆる言語がLLVMを介してコンパイルされるとかね。
LLVMのストラクチャも自動生成とか。
あー怖い。

391 名前:デフォルトの名無しさん [2017/08/28(月) 12:49:34.85 ID:0HhHgrwNM.net]
ちょっとしたコーディングミスで、以下の簡易コードように書いてしまって、ハマったのですが、コンパイルエラーにならなかった事に驚きました。

string a(何らかの文字列);
string s = s.replace(置換指示); //a.replace() と書こうとした。

コピーコンストラクトの右辺に、構築中(?)の自分自身を使ってしまったと言う事なのですが、これは規格上合法なのでしょうか?

392 名前:デフォルトの名無しさん [2017/08/28(月) 12:59:59.78 ID:0HhHgrwNM.net]
↑のサンプル貼っておきます。
https://ideone.com/X4ILlf

393 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 13:04:19.26 ID:96+DvSIX0.net]
x^=x でゼロになるんだっけ。
一応昔からある文法だけど。



394 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 16:57:17.16 ID:KK7lC/68d.net]
>>384
それの使い道がよくわからん

コンパイラと環境によっては x=0 より速かったりとか?
即値は全て名前を付けなきゃいけないとかいう糞コーディングルールの回避とか?
volatileをつけて、
ダミーリードと0クリアを1文で書けるとか?

思い付くのはこのくらい

395 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 17:22:45.55 ID:3VrqihWx0.net]
コンストラクタが実行される前なのでオブジェクトの内容は不定だろうし
不定なオブジェクトにも適切にアクセスする場合なら合法かもしれない
ただ不定な変数を使って何かしようとすると途端に undefined behavior 地雷を
踏むことが多いのでそこで頑張っても実りがあるとも思えないけど

396 名前:デフォルトの名無しさん [2017/08/28(月) 17:43:39.28 ID:+dyqlMtL0.net]
>>385
アセンブラでよく使う xor eax,eax を逆コンパイルするとアレになる

397 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 17:52:50.38 ID:eeKFZJ460.net]
のっぷぁ

398 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 17:54:52.47 ID:eeKFZJ460.net]
or eax,eax だろバカチン

399 名前:片山博文MZ mailto:sage [2017/08/28(月) 18:02:16.04 ID:HJX32+mcd.net]
xor eax,eaxがゼロクリアで、
or eax,eaxが何もしない。

400 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 18:08:57.91 ID:Wq6HqE7w0.net]
さすがにPC系コンパイラで
0クリアを最適化しないのは無いかと

xor eax, eax は0イディオムとか言って、
普通のxorとは微妙に扱いが異なる

昔は sub ax, axより xor ax, axの方が微妙に速かったりした
今はフラグ以外は同じ

>>390
何もしないわけじやない
ちゃんとフラグが変わる

401 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 18:38:50.00 ID:7lbHEj3b0.net]
ttp://www.st.rim.or.jp/~nkomatsu/premicro/corezoom2.JPG
昔とはこういうスゴイ編み物の時代ですかね

402 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 19:05:01.12 ID:Wq6HqE7w0.net]
だね

403 名前:片山博文MZ mailto:sage [2017/08/28(月) 19:10:04.94 ID:HJX32+mcd.net]
編み物だって意味のあるつまら



404 名前:ないことの積み重ねで実現されている。
プログラミングだって多分同じ。
[]
[ここ壊れてます]

405 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 19:36:30.92 ID:KK7lC/68d.net]
コルモゴロフの最小プログラムに対しても同じ事が言える?

406 名前:デフォルトの名無しさん [2017/08/28(月) 19:37:58.17 ID:y0vE8H3MM.net]
>>382
質問を変えると、
何でコンパイルエラーにしてくれないんだろう?
ってところが気になっています。

407 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 19:41:20.09 ID:MWmJNebXr.net]
>>382
3.3.2/1には反しないが3.8/6的にはだめだろう(たぶん)
未定義動作なのでコンパイルエラーになることは要求されていない

408 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 19:41:46.31 ID:KK7lC/68d.net]
別のsが定義されてるとか

409 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 19:58:41.88 ID:rn9GWLpv0.net]
>>391
それは x86/インテル方言なだけでは?
普通のアーキテクチャならばロードだけでフラグが変わるもんですキッパリ

410 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 20:21:02.23 ID:KK7lC/68d.net]
x86の話をしてるわけだけど

411 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 20:22:04.01 ID:KK7lC/68d.net]
eaxなんてレジスタ、他にあるか?

412 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 20:48:55.97 ID:GiFa6ZsP0.net]
inline void zero_clear(int& x) { x ^= x; }

413 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 20:55:31.76 ID:GiFa6ZsP0.net]
3E AF



414 名前:デフォルトの名無しさん [2017/08/28(月) 22:22:13.51 ID:Na7nyTMka.net]
そう言えば64bitアセンブラ勉強してた時ウェブで64bitレジスタでxor rax raxってするより、64bitプログラムでもxor eax eaxってした方が機械語短いって書いてたな。
アセンブラ上は同じ長さだけど、機械語上は64bit命令の方が長い&32bitレジスタへの操作は自動的に64bitレジスタの上位bitがゼロクリアされるから同じ動きになるとかなんとか。
キャッシュに入るコードが増えるから速くもなるらしい。

415 名前:デフォルトの名無しさん mailto:sage [2017/08/28(月) 22:33:21.77 ID:Wq6HqE7w0.net]
intel公式のドキュメントに書いてあるレベルだから
普通のコンパイラは当然そういうコードを吐くと思うよ

416 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 00:27:36.33 ID:AHYNkT+D0.net]
OpenMPIを用いたプロセス並列コードのプロファイルを取りたいんですが、
gprofだとテンプレートがごちゃごちゃしててすごく見にくいです。
何か勧めなフリーのプロファイラはないでしょうか?

417 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 01:49:03.35 ID:skpcufF70.net]
座標を動的配列で格納していき、
(50,50),(100,100) //直線1の座標
(30,30),(70,70)  //直線2の座標
↑こんな感じに直線の数だけ座標の組み合わせが増えます。

この上から2個の座標の組み合わせ、
つまり座標4点を使い交点を計算するプログラムを作ろうとしています。

計算式を作っていく際にfor文を使っているのですが
1つ目の座標の組み合わせと2つ目の座標の組み合わせを計算式内で使うので
二重ループがいいかと思い作ろうとしましたが動的配列での二重ループの作り方が分かりません。

助けて頂けないでしょうか…。
長々と申し訳ありません。

418 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 02:17:37.67 ID:On05DpTS0.net]
>>396
void* p = &p;
↑こういうのは受け入れないといけない一方で >382 を NG とするための境目を
ちゃんと定めてコンパイラ実装するのはめんどくさそうだなと思う。
頻繁に踏む問題でも無くてコンパイラ実装者がそこに注力する動機も薄そうだし。

419 名前:デフォルトの名無しさん [2017/08/29(火) 02:27:26.09 ID:KA5Uf3Ix0.net]
>>397
む、なるほど…
確かに未定義であれば、コンパイルエラーにしなくとも文句は言えませんね。

>>408
!!!なるほど!!!
実用性はさておき、その例文で納得してしまった。

420 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 02:33:36.21 ID:vHDkbJz50.net]
>>407
動的配列だと何が問題あるの?
何につまずいているのかよくわからんなあ
例えばキューで実装するとか
直線をひとつづつプッシュ、


421 名前:諠^イミングで直線を必要数ポップし交点を描画 []
[ここ壊れてます]

422 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 22:17:26.88 ID:R/tQJHqT0.net]
Iteratorで2重ループするやり方がわからな
いとか?

423 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 00:38:16.23 ID:95r+Hm0D0.net]
はい
iteratorでの二重ループが分かりません。
x1={1,2,3}
x2={4,5,6}
1*4 , 1*5 , 1*6
2*4 , 2*5 , 2*6
3*4 , 3*5 , 3*6
といったような計算が出来るプログラムを動的配列でつくりたいです。



424 名前:片山博文MZ mailto:sage [2017/08/30(水) 01:26:58.11 ID:KDhhphrhd.net]
it->begin(), it->end()

425 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 01:55:32.89 ID:0ZIBVCLk0.net]
基礎の基礎が判ってないってパターンか

426 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 02:05:27.07 ID:J1aJRQDA0.net]
>>412
まず通常のループは書けるの?
たとえばx2は4固定でいいのでループを記述してみたら?

427 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 05:26:39.94 ID:27CMeyKU0.net]
>>412
https://ideone.com/CfQxRE

428 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 06:45:43.57 ID:3iEZIBUv0.net]
>>413
itがイテレータならおかしいな

429 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 07:05:47.51 ID:0ZIBVCLk0.net]
いてれたのいてれた

430 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 08:57:17.67 ID:95r+Hm0D0.net]
>>415
通常のループも、二重ループもあらかじめ用意した配列でなら書けます

動的配列になるとiteratorの使い方が分からずプログラムが動かなくなってしまうのですが笑

>>416
ありがとうございます使ってみます!

431 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 09:07:19.16 ID:Nr6Jv4Sva.net]
>>419
つまり分からないのはイテレータのループそのもので、二重ループは関係ないということかな?

432 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 09:12:14.51 ID:y1raZQAZ0.net]
perlのfor my $elem (@array){をやるのに何年懸ったんだろうといつも思う

433 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 09:13:52.07 ID:95r+Hm0D0.net]
>>420
そんなかんじですね
たとえば、x[i+1]をiteratorのループではどう表現するのかとかそういうのが分からないとかです



434 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 10:44:38.77 ID:VpX1ZCKl0.net]
イテレータは繰り返しを前提としているので基本的に進むと戻るの操作しか提供しない。ランダムアクセスっていうのもなくはないけどね。
it++で前進、it--で後退。操作して、Container.begin()と同じ値なら先頭を、Continer.end()と同じ値になったらそのコンテナの末端を指している。
基本的にはポインタを抽象化したものだからポインタの操作を思い出すと少しわかりが早い。

435 名前:デフォルトの名無しさん [2017/08/30(水) 12:11:28.40 ID:NGfIYJwv0.net]
>>422
君には早いのでまずはポインタでぐぐってくれ
x[i + 1] == *(x + i + 1)

436 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 12:24:58.79 ID:PTG1CRxV0.net]
ポインタではループ書けませんって
なんかつき合う気失せるぐらい初心者やね
いやアンタが悪い訳じゃないんやが

437 名前:デフォルトの名無しさん [2017/08/30(水) 12:35:06.14 ID:BJd10UjW0.net]
>>419
それ、end()が何を返しているかとか、
連続領域でないのにポインタを返しているとか
そういう系の問題じゃね?

あと「イテレータのループ」というのが
range-based-forだったりすると
x[i+1]はそもそも無理だぞ

438 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 13:45:30.49 ID:95r+Hm0D0.net]
みなさんありがとうございます!
もっと勉強して出直してきます

439 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 20:58:46.39 ID:UeWdSpDY0.net]
Cとjavaの基礎やったから基本の文法とオブジェクト指向の触りみたいな部分だけわかるんだけどこの状態でテンプレートとかの勉強初めていいの?
あそこらへん急に難しくなるイメージあるけど他に先にやるべきこととかあります?
あとそういう人におぬぬめの本とかもしあったら教えてくだされ

440 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 21:26:25.83 ID: ]
[ここ壊れてます]

441 名前:it2NMgLA0.net mailto: >>428
まずテンプレートライブラリの使用方法を重点的に
自分でテンプレートを書くのは後回しにしたほうがよい
[]
[ここ壊れてます]

442 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 22:54:34.30 ID:T8zS0A0mr.net]
>x[i + 1] == *(x + i + 1)
はて、いったい何の言語の話だろうか

443 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 23:02:57.29 ID:lE/piHRT0.net]
突っ込みたいことがあるならはっきり指摘すれば?



444 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 02:07:06.34 ID:Ce9FMcgb0.net]
>>424
ポインタを意識させないのがイテレターだろうに

>>430
左辺と右辺が同じだって事が言いたいんだろうけど...
上に書いた理由でトンチンカンと言わざるを得ない

445 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 02:08:47.68 ID:Ce9FMcgb0.net]
>>422
it_next = it;
it_next ++;
とか

446 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 02:11:16.28 ID:JJLmvwvW0.net]
>>432
意味がわからない
もう少しわかりやすく頼む
出来ないならもう発言しなくて良いから

447 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 02:40:29.14 ID:ZosLKwRR0.net]
なぜにイテレータでやろうとするのか
valarray使えばこんなの即効だろ

448 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 05:33:17.64 ID:5oi4R35S0.net]
あのー、このスレに限らずどこもなんだけどさ、
初心者をケナスくせは、やめた方が良いよ。
ちょっと知ってる者の傾向だね。
ちょっと自分が物事を知ってるから、
「自分らが、上だ。と、知らない者をけなす癖」が多大に有るよね。
本当に知ってる者は、初心者にもやさしく教えてあげるよ。

449 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 05:41:23.80 ID:xNENwSVur.net]
>>432
>左辺と右辺が同じ
少なくともここはC++のスレで、C++では同じでないのだが何を言ってるんだお前は

450 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 06:49:36.91 ID:L0jWKquXM.net]
知らない者を貶す気はないけど知ったかの頓珍漢な指摘は全力でバカにする

451 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 06:52:13.92 ID:8V5/tdJ10.net]
また規格に自信ある奴が日本語読めてないな
日本語の文脈を理解できるようになってから発言してくれ

452 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 07:01:04.95 ID:Ce9FMcgb0.net]
>>437
C++でいつでも同じかなんてことはどうでも良い
レス自体トンチンカンなんだから

453 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 09:29:52.97 ID:F7+XKf5b0.net]
はっきり指摘できないのなら謙虚に発言した方がいい



454 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 10:24:10.68 ID:DHTk7O50d.net]
全くその通りだよね
ポインタ滅ぶべしとか思ってるのかも知れないけど、初心者はまずイテレータを理解してその後
ポインタを学べば良いなんてプロセスは効果的とは限らないし、個人的には無理があると思う。

455 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 10:46:40.85 ID:8V5/tdJ10.net]
C++使ってて初心者は隠蔽された中身を理解しなくていいとか本気で思ってる奴いるのかよ
それにイテレータはポインタのような操作ができるインターフェイスなのでポインタを理解してることは前提となっている

456 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 12:26:30.87 ID:+APqOuiHM.net]
逆だよ。初心者は隠蔽された中身を理解しなくていい範囲と使うべき。
初心者に教えるときも注意しなきゃいかん。

457 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 12:41:58.03 ID:aPsP1NJ+d.net]
>>443
イテレターを使う上で、ポインタを知らないと何が問題?

458 名前:デフォルトの名無しさん [2017/08/31(木) 12:45:17.10 ID:JYM1pg890.net]
「あたかもポインタのように振る舞うオブジェクト」を使うにあたって
そもそもポインタを知らないことの何が問題か本気でわからないのか?

459 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:20:58.17 ID:+APqOuiHM.net]
イテレーターのコンセプト、理解してる?
ポインタのように振る舞う、じゃないよ。

460 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:38:31.89 ID:BoCBvGLq0.net]
イテレーションすることを目的にしてるけど、
ポインタもイテレータの機能を持ってるからポインタを想像するとわかりやすいっていうのはある。

461 名前:デフォルトの名無しさん [2017/08/31(木) 15:09:44.78 ID:JYM1pg890.net]
>>447
どっかから引用したわけじゃないんで
そういうフレーズにはなってないだろうなあ

ポインタの使い方に

462 名前:、イテレータの使い方を似せてあるのは
誰の目にも明らかなんだが、おまえだけ違うのか?
重箱の隅でない説明がもしできるなら拝聴したいぜ
[]
[ここ壊れてます]

463 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 15:25:08.02 ID:8V5/tdJ10.net]
ポインタに似せるというコンセプトではないので、ポインタと同じ構文で操作できてもポインタとは何の関係もありませ〜んwwww


そんな話してねえだろコミュ障か?



464 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:21:10.10 ID:N6KLaE+9M.net]
イテレータの使い方がポインタの使い方に似せてある…?
もしかして、イテレータの意味わかってないんじゃないか??

465 名前:デフォルトの名無しさん [2017/08/31(木) 16:22:24.21 ID:JYM1pg890.net]
あ、ふじこったw
そのザマ見て気が済んだ

466 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:48:47.10 ID:8V5/tdJ10.net]
>>451
はいはい
イテレータはポインタの操作方法と互換性がある
ただし静的配列やvectorで使われているランダムアクセスイテレータはすべての操作をサポートしているが、それ以外ではサポートしていない操作もあるので注意
とまで補足を入れたらいいんだろ

配列の話をしていたはずなのにアスペはすぐ話の腰折るから困る

467 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:53:43.88 ID:DHTk7O50d.net]
むしろ初心者ほど中身を知りたがるもの。
イテレータなんて実装が隠蔽されてるわけじゃなし、知った上で抽象化したらこうなるってのが妥当な方向だ。
コンパイラがやる最適化等とは別の話だ。

468 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:55:03.46 ID:DHTk7O50d.net]
だいたいポインタの理解なんて義務教育レベルだしな。

469 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:55:37.94 ID:+APqOuiHM.net]
>>450
初心者に教える、つう前提を無視するなよ。アホか?

なんで初心者にイテレーター教えるのにポインタが必要なんだよ。説明してみろ。

470 名前:デフォルトの名無しさん [2017/08/31(木) 17:03:23.95 ID:JYM1pg890.net]
さあねえ
俺はポインタを知らんやつにイテレータを教えたことがない
それを馬鹿にしたければするがいい
じゃあ、あんたはどうやって教えたのか、こっちが聞きたい

471 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 17:29:30.90 ID:8V5/tdJ10.net]
>>456
その場でイテレータを使うだけなら必要ないが、それでは何故か動くおまじないになるだけ
マンツーマンじゃあるまいし基礎を理解していない者に教えるのは疲れるし両者にとって不毛だ
複雑な実装のイテレータを理解しろともコンピュータの仕組みを理解しろとも言ってないし
キーワードだけ見つけて何がなんだか分からない助けてくれと言う前に簡単な基礎からやれという指摘はおかしいか?

472 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 17:43:42.94 ID:N6KLaE+9M.net]
>>453
ちがうちがう
イテレータっていうのは繰り返しの抽象化だから、ランダムアクセスだのなんだのってのはおまけ
ポインタっていうのはアドレスに少し機能を付け加えたもの

リストのイテレータはリストのポインタと関係ないが、リストの特別版である配列のイテレータは配列のポインタと互換がある
だから、イテレータの操作とポインタの操作に互換があるというのは間違えてる
人に教える前にデータ構造について一から勉強しなおしたほうがいいのでは?

473 名前:デフォルトの名無しさん [2017/08/31(木) 17:59:29.96 ID:JYM1pg890.net]
ポインタに限ったことではなく、イテレータでもハンドルでも
「何が」「どこにある」という情報を持つもの、という概念を説明するとき

ポインタが最も直接的な実装となっているので
具体的なアドレス値を図に書いて説明できるし
復習するにも実測値でその図を書いてみることができるし
デバッガでも関係性を追ってみることが出来る
++で何をどう増やしているのか、比較とはどういうことかも
実測値から直感しやすい

そして、それで憶えたことがvectorのイテレータでならとりあえず通用する
そこからlistだとかistream_iteratorだとかへと差分学習で進めば楽だし
algorithmもポインタさえ知ってればとりあえず使えて
そこからまた差分学習でイテレータで使う場合を憶えれば楽という経験則

何か間違っているかね?



474 名前:デフォルトの名無しさん [2017/08/31(木) 18 ]
[ここ壊れてます]

475 名前::04:14.09 ID:JYM1pg890.net mailto: 誰かさんみたいに、ちがうちがうと自分の繊細さに酔うやつが
学習者の思考を丹念に潰しやる気を削いでいく有害な騒音源となる

語学の先生にもいるだろ?
[]
[ここ壊れてます]

476 名前:はちみつ餃子 mailto:sage [2017/08/31(木) 18:05:11.71 ID:Ev17QaWq0.net]
イテレータはポインタに似せたというよりは、部分的にポインタと共通のインターフェイスに抽象化されたものであって、
C にも有ったポインタという機能と新しい機能を無理なく (?) 統合するアイデアでしょ。
だから、どちらが先にありきと言えるものではないけども、
大抵の C++ 入門書だと時代的に早く出現したポインタを先に説明するのが一般的だと思うし、
初心者がその流れに沿わない学習をしているのだとしたら
体系的に学ぼうとせず場当たり的に調べてるんじゃないのと疑うって話じゃないかな。

前提がちゃんと出来上がってない人の質問にきちんと答えるのは無理だよ。
だからこれとこれを先にやった方がいいよっていうのは誠実な回答だよ。

477 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 18:10:20.20 ID:8V5/tdJ10.net]
>>459
マジでアスペか
実用上どのように使うかって話をしてるのに、聞いてもいないのに一人で勝手に賢いイテレータの定義の話をしている
お前は>>412>>419>>422を100回読んでから入門サイトでどんな説明をしてるか見てこい
俺はその上で質問者のやろうとしていることは、ポインタを操作することと同じなのでまずポインタを理解してくれと言っている

478 名前:デフォルトの名無しさん [2017/08/31(木) 18:24:58.66 ID:JYM1pg890.net]
>>462
は? イテレータは少なくとも1993年以後にできたもので
ポインタはBにもあったもので、どちらが先にありきは明白だ

イテレータの設計にあたりポインタを意識しなかったなんて珍説を唱えるには膨大な説明がいると思うが
おまえやってみるか?

479 名前:デフォルトの名無しさん [2017/08/31(木) 19:01:39.56 ID:JYM1pg890.net]
33e4-p7enの主張が二転三転していて何が言いたいのかわからん

480 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:05:47.57 ID:Him+FUnNM.net]
std::optionalもアクセス構文が同じだから、使うにはポインタの知識が必要なのかな

481 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:07:29.54 ID:+APqOuiHM.net]
>>463
必要なのは配列とインデックスと有効範囲だけだろ。ポインタを説明する必要は無い。

482 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:17:27.06 ID:8V5/tdJ10.net]
>>467
使うために必要かどうかではない
ポインタはC++を使う上で知ってて当たり前
ID:95r+Hm0D0 みたいに添字しかわかんねえと言われたらお前はそれよりもポインタからだとなる

483 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:20:33.91 ID:JJLmvwvW0.net]
もうやめてくんない?
誰もイテレータの成り立ちなんて興味ないのよ



484 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:20:55.53 ID:Ce9FMcgb0.net]
好きな順で覚えればいいよ

485 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:27:09.07 ID:+APqOuiHM.net]
初心者に配列管理を説明するのにわざわざポインタ持ち出すな、つうてんの。そういう事言ってるから老害なんだよ。
range-based forを説明した方がよっぽど有益だわ。

486 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:33:38.32 ID:N6KLaE+9M.net]
>>460
もちろんvectorを例にイテレータとポインタをまとめて教えるのは一つの手段として有りだと思うよ
ただ、何度も書いてる通りポインタとイテレータは独立した概念だから、その差分学習は論理必然じゃない

現に、俺は学部時代に授業でプログラム習ったときは、vectorのような連続領域じゃなくlistのような抽象リストで習ってるし
ポインタはCの授業で、アドレスの抽象として習ってるし、イテレータはデザパタの本で知ったからね

どの学び方がいいかは人それぞれなんだろうけど、独立した概念を一緒だよとか変な方便使うのは間違ってると思うよ

487 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:34:33.87 ID:N6KLaE+9M.net]
>>471
まぁ今ならコレだな

488 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:47:11.97 ID:oD4Vxh+n ]
[ここ壊れてます]

489 名前:M.net mailto: >>471に一票 []
[ここ壊れてます]

490 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 19:58:01.09 ID:8V5/tdJ10.net]
>>471
この意見はさすがに論外だわ
ポインタは難しいものでもややこしいものでもないから、ちゃんとした読み物があれば問題なく理解できる
難しいなら後回しにしてもいいならわかるが、最初から教えないというのは学習の機会を奪っているとさえいえる

491 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:02:22.38 ID:4TB5IpyN0.net]
>>443
はげどう

>>444
言語選ぼうよ;;

>>445
イテレータはポインタの概念を引きずってゐる
プログラムの動作を簡明に表すという意味では
配列の構文さえあれば十分なのに、

※ 個人の感想です

492 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:04:46.13 ID:Ce9FMcgb0.net]
老害が多いな
ソフトをやるならアセンブラからとか言いそうな勢い

493 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:08:55.54 ID:4TB5IpyN0.net]
尤も、C++の配列とか要素型であるクラスの継承とか多態性を表現しきらん欠陥品ではあるのだが
(インターフェースの配列はポインタの配列としてやるしかない;;
それゆえにやっぱC++で入門するなら中身知っとけと、



494 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:10:07.84 ID:Y1zUatWId.net]
>>475
あなたに教えを請う人がいれば、あなたが教えたいように教えたらいい

495 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:11:27.89 ID:g5ZfiDra0.net]
>>478
STLはテンプレートライブラリだから、動的なポリモーフィズムにガッツリ対応してないのは当然だし、
そーいうのがほしけりゃ自分で書けばいいだけ

496 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 20:17:41.92 ID:4TB5IpyN0.net]
>>480
左様動的なポリモーフィズムにガッツリ対応したコンテナクラスのテンプレートを
曲がりなりにもかけるようになってからがC++の入門編

抽象化された上位レイヤーの知識だけあれば詳細は知らなくて良い、というのは
漏れのない抽象化が達成された後のみ通用する話だが
ずんねんながらC++はそうではないし言語の性格上っ今後とも永遠にそうはならない

497 名前:デフォルトの名無しさん [2017/08/31(木) 20:25:29.52 ID:SvYtbMXE0.net]
>>471
その有益というrange-based forを説明してくれよ。

498 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 21:08:08.63 ID:iFrEf/VH0.net]
>>482
そこは流石にググれよ

499 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 21:11:56.48 ID:DEelFUhW0.net]
このなげぇクソはいつ終わるんだ

500 名前:デフォルトの名無しさん [2017/08/31(木) 21:32:29.56 ID:SvYtbMXE0.net]
>>483
悪いが馬鹿老害は黙っててくれないか。

若い人がせっかく説明したほうが有益だと言ってくれてるのだから。他の人も賛同してくれてる。

501 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:00:17.40 ID:Tmpts49Ar.net]
期待を裏切らない>>474

502 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 22:12:11.60 ID:Ce9FMcgb0.net]
みんな、ちゃんとアセンブラから勉強しろよwww

503 名前:はちみつ餃子 mailto:sage [2017/08/31(木) 23:18:28.91 ID:Ev17QaWq0.net]
>>464
いや、もちろん意識してるだろ。
そう書いたつもりだけど、どこをどう読んだんだ?



504 名前:デフォルトの名無しさん [2017/08/31(木) 23:19:12.52 ID:JYM1pg890.net]
>>471
おまえさ、じゃあ配列の添字は何だと思っているわけ?
「どこにある」という情報をもつもの、という点で同じだぞ
だから for(i = first ; i != last; ++i) において first や last や i が
整数であろうがポインタであろうがイテレータであろうが
同じ論理が通用するんだろうがよ
ポインタで範囲外アクセスこくような大馬鹿者が
整数ならそんなことないとでもぬかすのか?

505 名前:デフォルトの名無しさん [2017/08/31(木) 23:24:55.90 ID:JYM1pg890.net]
>>472
おまえC++やCよりも前に何かやってただろ
俺だってC++をCより先に憶えたクチで
そんな真似ができたのはアセンブラ使いだったからな

間接の概念をまっさらから憶えるのに
イテレータは無駄に難しいマゾプレーだつってんだ
ポインタわかっててもハンドルで悩むやついるくらいで
それに輪を掛けて++まであるのがイテレータであって

506 名前:デフォルトの名無しさん [2017/08/31(木) 23:27:04.06 ID:JYM1pg890.net]
>>4

507 名前:88
悪かったよ
そのようで
[]
[ここ壊れてます]

508 名前:デフォルトの名無しさん [2017/08/31(木) 23:32:03.77 ID:SvYtbMXE0.net]
>>471
まだ説明してないのか。説明頼むよ。キミが言い出したことなんだよ。

509 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 23:40:32.47 ID:y40vazij0.net]
(void*以外の)ポインタ自体も生のアドレス概念からは抽象化されている。
指されるオブジェクトの型やサイズを持っているんだからね。

それをさらに(ある方向に)抽象化したものがイテレータなんであって、そのように段階を追って
抽象化されていくストーリーを語るのは初心者向けにも有意義だと考える。

510 名前:はちみつ餃子 mailto:sage [2017/08/31(木) 23:59:46.91 ID:Ev17QaWq0.net]
イテレータに限らないけど抽象化されたものは抽象化されたままで扱わないと抽象化した意味がなくて、
(内部の実装を意識しなきゃならないのなら抽象化の甲斐が無い。)
一方では、その抽象化を作る側になることもあるので抽象化が出来上がるまでは抽象化の内側も知ってなきゃいけない。
つまり、層を積み重ねるたびに抽象化の壁を作っていくってのがプログラムを構成する基本的なやり方だろう。
だから、プリミティブな方から積み重ねながらその抽象化が意味するところを学ぶってのは普通の方法だと思う。
そういう意味で >>493 に賛成。

抽象化の内側を知ってしまった人が抽象化の壁の向こうを忘れて抽象化されたものとしてだけ
扱うってのはそれなりにセンスがいるんじゃないかとも思うんだけど、
C/C++ の背景にあるセマンティクスは良くも悪くも機械の理屈なんで、
どうあがいても高級アセンブラだと割り切って泥臭いポインタの側から学ぶのがいいと私は思うよ。
その泥臭いところを頑張って隠してるのが C++ ってもんなんで、
泥臭いところを知ったら C++ の色んな機能が「あー、こういうの欲しかったわー」ってなってありがたみを感じる。

511 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 00:30:44.48 ID:oWX+X4Ay0.net]
ストラウストラップが言うにはC++は
低レイヤーにアクセスできる機能とオーバーヘッドが無く使いやすいように隠蔽できる機能を持っている言語というようなことを言っていて
低レイヤーの部分を知らなくていいとは言っていない

512 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 01:02:22.22 ID:E+DzN2Xf0.net]
アセンブラの代替言語なのだから当たり前だ。用途もOSやドライバ、マイコン向けばかりだ。
COBOL、FortranやPerl、C#やJavaの代わりに使う人などいない。
低層を隠蔽する機能などお呼びではない。

513 名前:デフォルトの名無しさん [2017/09/01(金) 02:01:03.59 ID:2msaHTP30.net]
いやCOBOLの代わりには使うぞ
Fortranの代わりつーとCな客はいたねえ



514 名前:デフォルトの名無しさん [2017/09/02(土) 16:34:51.42 ID:Vkplowcj0.net]
opencv.jp/cookbook/opencv_img.html#image-resize
ここのソースコードをコピペしてコンパイルしようとしたのですが
関数 `cv::Mat::release()' 内:
test.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): `cv::Mat::deallocate()' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
このようなエラー文が出てしまいます
使っているOSはdebian stretchです
/usr/include/opencv2には必要なファイルはありました
どのようにコンパイルすればいいのでしょうか

515 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 16:50:32.70 ID:8FAKxNXu0.net]
環境依存すれってなくなったの?

516 名前:片山博文MZ mailto:sage [2017/09/02(土) 16:53:40.92 ID:bEjlZdoBd.net]
>>498
ライブラリをリンクする。

517 名前:片山博文MZ mailto:sage [2017/09/02(土) 17:01:02.17 ID:bEjlZdoBd.net]
>>500
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]2ch.net
mevius.2ch.net/test/read.cgi/tech/1500329247/

518 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 17:02:35.03 ID:8FAKxNXu0.net]
ないすー。

519 名前:デフォルトの名無しさん [2017/09/02(土) 17:03:12.44 ID:Vkplowcj0.net]
>>501
すみませんでした
こっちで質問してみます

520 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 18:03:57.34 ID:qkqtxzLpd.net]
c++に限った話じゃないんだけど参考書
とかだとメソッドの後にフィールドが
書かれてる事が多いようだけど、それが
一般的なの?

521 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 18:45:42.87 ID:qDvIb2f40.net]
ちがう
一般的にはフィールドたるメンバ変数の方が先に来る

学習の都合で、メンバ変数を先に説明した方が、どう考えてもラク
メンバ関数を先に説明すると、入門書を読むレベルの初心者は間違いなく混乱するので、そんな参考書はまず見かけない

そもそもメソッドの中で使う変数は始めに宣言しておかないと使えない

結論としてはあなたが用語の取り違えをしてる……としか

522 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:04:41.89 ID:4lafg32N0.net]
クラスのレイアウトの話じゃなくて?

523 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:23:47.80 ID:FGRVT/X40.net]
レイアウト、というとデータの並び順の意味にとられかねず語弊がある



524 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:28:16.32 ID:4lafg32N0.net]
じゃあ宣言の順序

525 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 19:57:46.29 ID:l0rE+2Xa0.net]
public、protected、privateの順に書いていくと
自然と変数はpublic関数の次に来るわ

526 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:02:43.47 ID:EU1kDRi00.net]
普通アクセス修飾子の順じゃなくてフィールド→メソッドの順じゃないの
カプセル化するから変数なんてほとんどprivateだろうし
変数は変数でまとめて書いてもらわないと混乱する

527 名前:デフォルトの名無しさん [2017/09/02(土) 21:08:20.92 ID:Wuw432Mc0.net]
ユーザーにとって重要な項目から順に書く
つまり、public→protected→privateで
ユーザーに見せる必要のないprivateは一番下で

528 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:13:48.77 ID:FGRVT/X40.net]
変数の宣言と関数の宣言の順序がどうでも良いのは自明
メンバ関数の定義がメンバ関数内で使用するメンバ変数の宣言に先行する場合も実験する限り合法
(規格に具体的にどういう文言で規定してあるのかは知らん

まあ定義時点で不完全な型やら値やらはテンプレートの定義で頻出するから
あんま定義と宣言の順序にこだわらない処理系の作りなのだと納得しておく

しかしなぜかテンプレートの引数でない型の定義(または宣言)と使用には厳格な順序を求められる…
次のコードはビルドが通らない
class Baz {
// struct Bar; // 左のコメントアウトを外したら逝ける
 void foo(Bar& b);
 struct Bar { int x, y; }
};
多分Cとの互換性のために仕様がワケワカメになった例

529 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:17:46.72 ID:RAQSA3Kg0.net]
ルールが存在してwell documentedで、ガバナンスがきいていることが重要
お前らのオレオレ哲学なんかどうでもいい

530 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:19:59.11 ID:EU1kDRi00.net]
ああそっか、プロトタイプ宣言しなきゃいけないんだっけC++は
C#の脳で考えてたわ

531 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 21:51:57.26 ID:MiX3UcgLr.net]
>変数の宣言と関数の宣言の順序がどうでも良いのは自明

自明かねぇ
C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない

532 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:01:20.86 ID:VLpwNclp0.net]
コンストラクタ実行時のメンバ変数の初期化の実行順が、初期化子の記述順ではなくクラス定義での並び順に従うっていうのがあった気がするけど、新しい規格では変わったんだっけ?

533 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:10:24.95 ID:pFkNGMyF0.net]
>>516
うそーん、初期化子の記述順>クラス定義の並び順だと思ってた。
てか、宣言の並び順は無関係?
そら、警察官も道行く江添さんに聞きたくもなるわw



534 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:21:28.04 ID:MiX3UcgLr.net]
>>516
微妙な表現以外、特に変わったという話は聞いたことがない

C++03 12.6.2/5
Then, nonstatic data members shall be initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).

C++20 draft 15.6.2/(13.3)
Then, non-static data members are initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).

535 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:37:32.53 ID:i6uhqYA10.net]
>C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない

とか書いてるから何か制約が無くなるような変更があったのかと思って聞いたんでない?

536 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 22:39:43.42 ID:FGRVT/X40.net]
ちな漏れがどうでもよい(どんな順序でも問題ない)と言ったのは
変数の宣言と関数の宣言の順序(どちらを先にするか)だからな
これ豆な

537 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 23:00:05.29 ID:MiX3UcgLr.net]
C++11でもこれがあったか
struct A {
 int m;
 decltype(m) /*←mは先に宣言が必要*/ f() { return m; /*←mは後でもいい*/ }
};

C++11で緩和されたのは11章のどっか(忘れた)

538 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 15:24:44.62 ID:5WRYI1ZX0.net]
static メンバ関数と friend 関数の使い分けについて教えてください
どちらも似た機能だと思ってしまうのですが‥

539 名前:はちみつ餃子 mailto:sage [2017/09/03(日) 15:42:16.65 ID:XXf7E2cS0.net]
あ〜、そんなこと考えたことなかったけど、クラス (メンバ関数) 内部から見たら近いっちゃ近いのかも?
クラスを定義する側じゃなくてそのクラスを使う側の気持ちで考えて。

540 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 15:47:48.54 ID:5WRYI1ZX0.net]
friend 関数は public で,static メンバ関数は private で,て感じでこの前は書きました
普通はどうするものかをお聞きしたいところです

541 名前:はちみつ餃子 mailto:sage [2017/09/03(日) 15:55:23.63 ID:XXf7E2cS0.net]
すまんけど自明すぎてどう使い分けるとか説明できない。
使い分け以前にそもそも理解できているか怪しいと思う。

542 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 16:12:00.06 ID:5WRYI1ZX0.net]
何度も宣伝するようで気が引けますが,前に書いたのは >>158
演算子のオーバーロードに絡むものは基本 friend で,内輪で使うものは private の static メンバ関数で,
くらいの線引きをしています.
書いてみてわかったのは「自明」という感じはしないこと,かな,考えてみれば friend 関数って他の言語にはなさそうです

543 名前:デフォルトの名無しさん [2017/09/03(日) 16:48:05.14 ID:jXGwZqzU0.net]
何で? operatorはグローバルに出さなくても多重定義候補に挙がるぞ
俺は別の理由でoperatorをグローバルにする傾向があるが



544 名前: mailto:sage [2017/09/03(日) 17:05:16.51 ID:5WRYI1ZX0.net]
>>527
codepad.org/8Z3c2obA
ほー,これは不思議だなあ‥
friend をはずすとコンパイルできない
friend をつけてしまうと public に置こうが private に置こうが関係ない,という認識であっていますか?

545 名前:デフォルトの名無しさん [2017/09/03(日) 17:23:08.48 ID:jXGwZqzU0.net]
何が不思議?
friendを外すとメンバoperator+に過剰な仮引数となりエラー
friendは「メンバではない」のでアクセス指定は無関係
1点だけ気になるのが、friendは当該クラス自体と同じスコープに新しい識別子を導入しないはず・・・
識別子はoperator+で、これのみは某か標準のヘッダで既に宣言されているということか?

546 名前: mailto:sage [2017/09/03(日) 17:29:26.39 ID:5WRYI1ZX0.net]
>>529
>operator+に過剰な仮引数となりエラー
つまり operator+ の >>528 とは違うもう一つの呼び出し書式にしないといけないわけですね.
でもこの場合は private に置くとコンパイルできない
codepad.org/RLo9fKuI

friend はアクセス制御如何にかかわらず「強引にpublic にする」ように見えますね‥わからない‥

547 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:31:44.96 ID:zmbOaeS6d.net]
friendなら、その人のプライベートにアクセスできる。それだけの意味。

548 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:33:29.06 ID:zmbOaeS6d.net]
ある人のfriendなら、その人のプライベートにアクセスできる。

549 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:36:12.98 ID:5WRYI1ZX0.net]
>>531
>>522 をどうかよろしくお願いいたします.

550 名前:デフォルトの名無しさん [2017/09/03(日) 17:39:19.97 ID:jXGwZqzU0.net]
>>530
強引にpublic・・・で憶えやすいならそれでいいんじゃね?
ちな俺の憶え方はメンバでないものをどうやってprivateにするんだ、だ

551 名前:片山博文MZ mailto:sage [2017/09/03(日) 17:40:51.54 ID:zmbOaeS6d.net]
あるクラスX内部のstaticでpublicな関数fは、Xのインスタンスの存在に関係なくX::fという名前でアクセスできる。
あるクラスX内部のfriendな関数gは、X内部のプライベートなメンバーm_aにアクセスできる。

552 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 17:42:36.39 ID:5WRYI1ZX0.net]
>>534
確かに friend 関数は「メンバーじゃない」ですか‥main() と同じような普通の関数なわけですね‥

553 名前:デフォルトの名無しさん [2017/09/03(日) 19:02:31.58 ID:jXGwZqzU0.net]
friendは他のクラスのメンバかも知れない
そういうときも俺の憶え方なら動揺せずに済む



554 名前:デフォルトの名無しさん [2017/09/03(日) 19:05:08.53 ID:/S0gLPFy0.net]
メンバ関数より、メンバでもfriendでもない関数を使おう
って誰かが言ってた

555 名前:デフォルトの名無しさん [2017/09/03(日) 19:11:23.65 ID:jXGwZqzU0.net]
欲しい機能がメンバでない関数で使えないとなれば
それはクラスの設計ミスないしはダサい設計だかんな
クラックできちまうのと違う提供すべき機能の欠落

556 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 19:52:56.95 ID:yMO/rU630.net]
またクズが暴れてるのか・・・

557 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 19:55:19.54 ID:eN0Ud7+B0.net]
>>530
(1) friendが無い場合
「z = x + y;」に出くわしたコンパイラは
 1. インスタンスxに対しするC::operator+(y)(1引数)の呼び出し
 2. グローバルな関数C operator+(C const& a, C const& b)(およびその亜種)の呼び出し
のあてはめを順次試みるがどちらの関数も宣言が存在しないからあてはまるものが無くエラーになる

(2) friendがある場合
friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言されたことになる
このとき「z = x + y;」に出くわしたコンパイラは、上の1、2の順で当てはめを試み、
グローバルな関数C operator+(C const& a, C const& b)の呼び出しと解釈する。
本来この関数はクラスCのprivateメンバにアクセスできないが、friendの力でそれができ、めでたくビルドできて動く。

細かい話は規格の人がフォローして☆ホスイ

558 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 21:08:24.75 ID:Kvjfvtnar.net]
>(2) friendがある場合
最も近い(内側の)名前空間の関数になる(11.3/6-7)
friend関数がメンバーではないことがC++14に明記されていなかったようで、C++17ドラフトに追記された模様(N4659 12.2/2)

<おまけ>
宣言の場所がクラス内という事情により、リンカーはともかくコンパイラーから存在が見えにくい関数となる
この関数を使うには
・名前空間スコープで明示的に宣言し直す
 C operator+(C const& a, C const& b);
・ADL(argument dependent lookup)でクラススコープの検索を発動させる
 >>541でoperator+が呼び出せているのはADLによる

559 名前:デフォルトの名無しさん mailto:sage [2017/09/03(日) 21:36:42.85 ID:Kvjfvtnar.net]
つまりクラスの外で定義された関数をイメージすればいい
struct A { friend void operator+(A,A) {/**/} };
 ↓
struct A { friend void operator+(A,A); };
void operator+(A,A) { /**/ } // ただしADLが無いと見えない

560 名前:デフォルトの名無しさん [2017/09/03(日) 21:38:57.90 ID:ipvja13x0.net]
ドット拡張とかすればいいのにね
int static_value.fanction() = 0; // function専用
vid functionx.function(char*p){} // function専用

ファイル内スコープなんて今時ほとんど使わないから無視するか識別子重なったら同一と見做すかして
ついでにドット型はファイル内の前方参照も無くし宣言を省けるようにするとかさ

561 名前: mailto:sage [2017/09/04(月) 01:15:45.54 ID:rnM3x3Xp0.net]
>>541
>friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言された
なるほど,そんなところだろうと >>528 で考えておりました.
件のライブラリもどきでは,operatorX のみクラス外に公開できればいいので,friend 関数で公開しておりました
その他は(基本的に)(公開すらしたくなかったため)static メンバ関数でのprivate 宣言となりました.

そうしたいようにそう書けばいいのですが今一つ統一感を見えてなかったかもしれません.
>>540
すみません

562 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 06:46:46.49 ID:bUZLYHBF0.net]
>>522
static関数とfriendは全然違うし似てるとこなんてない

563 名前:デフォルトの名無しさん [2017/09/04(月) 08:11:17.30 ID:6a+3L2fAd.net]
>>546
みなさんこれが典型的ななんの役にも立たない回答の好例です



564 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:13:10.29 ID:t0m5bmxTM.net]
煽ることしかできない奴乙

565 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:17:12.97 ID:MR3pz7f3d.net]
>>546
共通点はある

566 名前: mailto:sage [2017/09/04(月) 08:28:42.00 ID:CIc3tQw70.net]
>>546
static 関数をpublic に置くか,friend 関数にするかの判断がよくわからないのです.
なにか指針があればうれしいのですが

567 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:37:44.08 ID:MR3pz7f3d.net]
呼ぶときにクラス名を書きたいか書きたくないかで判断
コンパイルした結果には大した差はない

568 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 08:51:25.02 ID:EfQNUMljd.net]
staticだとADLに引っ掛からないとか?

569 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 09:10:00.24 ID:s4lmvNao0.net]
クラスの外の関数とオーバーロードさせたければfriend
https://ideone.com/Bfcfbq

570 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:13:49.53 ID:roJHcSrip.net]
なんでこんなどうでもいいことで30も消費してんの

571 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:38:52.68 ID:Ly8n+qhB0.net]
staticはメンバを触れない。friendは触れる。
それくらいしか違いないけどなぁ。
俺、フレンド関数はほとんど書いたことない。

572 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:42:45.81 ID:EfQNUMljd.net]
>>555


573 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 10:44:19.85 ID:Ly8n+qhB0.net]
違ったっけ。
staticってthisもってないんじゃなかった?



574 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:03:17.00 ID:Ly8n+qhB0.net]
https://ideone.com/qDEfdG
勘違いやったわ。ごめんなさい。
一個勉強になった。

575 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:51:31.64 ID:ByDgWFhHM.net]
メンバ変数をprotectedにする人ってなんなの?露出狂なの?

576 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 11:55:13.79 ID:EfQNUMljd.net]
そういう人が日本に一人二人いるかも知れないけど、気にするだけ損だよ

577 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 12:17:47.72 ID:Ly8n+qhB0.net]
継承しても触れるようにするためだけど。継承自体がほとんどない。

578 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 12:51:51.83 ID:bUZLYHBF0.net]
>>558
勘違いというのが勘違い

579 名前:デフォルトの名無しさん [2017/09/04(月) 12:57:07.34 ID:KIEUzmnzM.net]
クラス内に定義されたstatic関数は、そのクラスのオブジェクトが存在しなくても使える関数ってのが本来の意味。
動的なオブジェクト状態には依存せず、静的なクラス構造のみに依存するからstaticね。

対してfriendは、自分をさらけ出す人を指定するめのもの。

stream のから呼び出されるオペレーターを定義する時には、既に完成している stream (だけ)に対して自オペレーターをさらけ出してしまうのがいろいろな意味で最も効率的。

以上から、friend関数は、静的ポリモーフィズムを関数レベルでお手軽に実現したいときに使うと思っている。

580 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:03:46.35 ID:bUZLYHBF0.net]
表層的に言うと
staticはグローバル関数をクラススコープにして、かつアクセス制御も効くようにしたもの
friendは>>531の通り
ただそれだけのこと

581 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:05:20.90 ID:ByDgWFhHM.net]
>>561
なんで素っ裸でコートきてんの?露出狂なの?って聞かれて
コート脱いだらちんこ見えるようにする為だよって答

582 名前:えてんのと同じだぞ

まったく…露出狂は社会に出ちゃいけない存在なんだから、もう二度とプログラミングするんじゃないぞ
[]
[ここ壊れてます]

583 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 13:05:58.55 ID:ws3TkDjE0.net]
仕様がグダグダですな。



584 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 15:31:51.46 ID:xMNR7APW0.net]
>>565
うまい事言うなあ
friendは「なんで俺にだけ素っ裸見せんの?露出狂なの?」と聞かれて
「だってお前友達じゃん。だからお前にだけ俺の裸見せてやんよ」と言ってるわけだしな」

585 名前:デフォルトの名無しさん [2017/09/04(月) 16:26:06.19 ID:pd3pCmCq0.net]
あれだろ
日本語のガールフレンドと
英語のgirl friendじゃ意味が違うというアレ

586 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 16:40:24.27 ID:Ly8n+qhB0.net]
>>565
あんたに決められる筋合いはねー。災いあれ。

587 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 16:58:13.05 ID:EfQNUMljd.net]
friendはクラスの役割を適当に分担しながら実装の隠蔽を図るのにはまあ妥当な仕組みだろうな

588 名前:デフォルトの名無しさん [2017/09/04(月) 17:07:07.44 ID:pd3pCmCq0.net]
継承をほとんど使わないってどんな分野だろう
俺んとこではポートを叩くときのプロトコルが
似ているようで少しずつ違うなんての普通にあるし

589 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 17:13:32.82 ID:MR3pz7f3d.net]
複数のクラスのfriendが可能
staticは1個だけ

590 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 17:15:33.44 ID:EfQNUMljd.net]
ダックタイピングじゃね?

591 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 18:52:24.45 ID:s+p5aXGeM.net]
>>567
親しき仲にも礼儀あり。
アクセサぐらい用意するよね。

592 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:06:46.17 ID:CIc3tQw70.net]
>>565
>もう二度とプログラミングするんじゃないぞ
わかりました,もう止めます‥

593 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:28:25.71 ID:EfQNUMljd.net]
C++のfriendが現実世界の友達と違うのは、最初に決めたやつ以外にfriendを増やすことは全く好ましくない、
という点だろう



594 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 19:58:54.95 ID:ByDgWFhHM.net]
>>569
publicにしてあるほうが、まだかわいげがあるよ
もう、これからはすべてpublicにしなさい

595 名前:デフォルトの名無しさん mailto:sage [2017/09/04(月) 23:34:49.89 ID:jzRaTvEE0.net]
friendじゃなくfamilyが良かった気がする

596 名前:デフォルトの名無しさん [2017/09/04(月) 23:45:07.31 ID:pd3pCmCq0.net]
そうだね、ニュアンス的にはそっちだ

597 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 10:50:00.46 ID:D99g/mXF0.net]
>>578
#define family friend
で行ける?

598 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 12:19:42.29 ID:FAzSlJ+ld.net]
#define amigo friend

599 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 12:30:05.08 ID:eN2J5TsS0.net]
#define brother friend

600 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 13:50:03.50 ID:MHv2cVQ40.net]
printf("We are the World."); ←わかる
cout << "We are the World" <<endl; ←わからない

printfは「関数」だからわかります。
coutの<<はシフト?よくわからないです。
なぜC++はこんな文字の出力のさせ方にしたんでしょうか?関数じゃダメだったんですか?

601 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 13:54:25.72 ID:5+GcycqS0.net]
方法が増えただけ
以前どおり関数でも大丈夫だよ

602 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 14:03:50.06 ID:CTfci4Vl0.net]
>>583
<<は演算子オーバーロードだけどcoutなんて使う必要ないよprintfでOK

603 名前:デフォルトの名無しさん [2017/09/05(火) 14:04:00.15 ID:5KjI8r3d0.net]
>>583
それはまさにC++の作者(以下、禿)が
彼の著書でアピールしていたことだ
coutとは何か? <<とは何か?
記号と意味はどこでどのように関連付いているのか
意味は関数で表記することにしよう
<<の意味を表記する関数の関数名をoperator<<としよう
プログラム言語の命令とデータは動詞と目的語だ
動詞は関数と1対1対応でよいが目的語の定義は動詞の蓄積だ
・・・てな具合



604 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 17:31:12.14 ID:LcvSXQg0d.net]
>>583
シフト演算子を全く別の意味に使う
ひどい設計だと思う

605 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:16:33.48 ID:FAzSlJ+ld.net]
それほどでもない

606 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:16:37.41 ID:deDONG/TM.net]
cout.<<("We are the World"). <<(endl);
があれば少しはマシだったかね。

607 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 18:45:41.20 ID:fgaIXgJY0.net]
>>583
演算子のオーバーロードのよいお題ということで無理矢理ねじこんだんじゃないかな

608 名前:デフォルトの名無しさん [2017/09/05(火) 18:48:59.76 ID:Ol0Fklqi0.net]
using namespace std;
double value = 1.23;
cout << "value = " << value << endl;

609 名前:デフォルトの名無しさん [2017/09/05(火) 19:06:29.40 ID:/x4Q9Nfh0.net]
>>587
お約束を破っているが流し込んでる感が出ているので芸術点高い

610 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:25:16.50 ID:FAzSlJ+ld.net]
+-*/と違って<< がシフト演算子なんて決まってないから「本来と違う」なんて意味なさない

611 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:34:59.61 ID:TUBHCjnbM.net]
vectorオブジェクトが破棄されるとき、要素の解放順は要素順であることは保証されていますか?

612 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:39:42.84 ID:DJL8TJyoM.net]
>>594
されてない

613 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:39:47.76 ID:LcvSXQg0d.net]
>>593
いや決まってる
ライブラリを抜きにした純粋な言語ではシフトの意味しかない
元の言語のC言語も同じ

* の方がいろいろな意味で使われている



614 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 19:42:00.05 ID:FAzSlJ+ld.net]
>>596
べつにc/c++の話じゃなく、一般に<<をIOの意味で使ってもなんとも思わんでしょ
+-*/はさすがに刷り込まれている

615 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:04:52.50 ID:Xvi9WQb30.net]
数学の演算子とプログラム言語の演算子のことじゃないかな。

+ - は数学とプログラム言語で一致
* / は数学と違うけど文字セットに乗除の記号がないし妥当な代用
<< をシフトに使うのはC系プログラム言語の独特の使い方
だったら << が出力になってもええじゃないか、という話。

616 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:10:04.82 ID:CG6xGPaC0.net]
向きは違うけどbashみたいなイメージだと思ってた

617 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:10:32.88 ID:gdvLxkwI0.net]
お前がそう思うんならそうなんだろうお前ん中ではな

618 名前:片山博文MZ mailto:sage [2017/09/05(火) 20:11:08.83 ID:HWiXORhGd.net]
数学では、比較してずっと小さい、ずっと大きいという意味で<<、>>を使うことがあるみたいだが。

619 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:11:12.82 ID:TUBHCjnbM.net]
>>595
ありがとうございます
保証するにはどうすればいいですか?
ググってstackoverflowとか見たんですが、できないという人もいたり
clear()を使えという人もいてよくわかりません

620 名前:デフォルトの名無しさん [2017/09/05(火) 20:17:36.79 ID:5KjI8r3d0.net]
禿が言い出した<<と
おまいらが言い出す<<では
悪いが社会への影響度がまるで違う
大勢のPGが<<はI/Oだと素直に従うかどうかでだ
新しい言語に旧来の言語と似た記号が出てきたからって
同じ意味でなければならないという法はどこにもない

621 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:19:03.84 ID:D99g/mXF0.net]
>>602
なんで順番が気になるんだ?

622 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:21:01.51 ID:eN2J5TsS0.net]
ローテート命令が演算子化されてないのは何故なんだぜ?

623 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 20:58:17.14 ID:TUBHCjnbM.net]
自己解決しました

>>604
必要な場面がありまして



624 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 21:12:58.72 ID:Eko3GwfuM.net]
printfをモダンにアレンジして新規格作ればいいのに。

625 名前:デフォルトの名無しさん [2017/09/05(火) 21:50:59.32 ID:5KjI8r3d0.net]
>>605
それな
俺も

626 名前:時々欲しくなるんだけど
キャリーを含む/含まないとかCHAR_BITの違いとかで
移植性が確保しにくそうだよな
記号を何にするかなんて後から決めりゃいいことだ
[]
[ここ壊れてます]

627 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:29:35.14 ID:NIuXE25q0.net]
>>605
ローテートなんて頻繁に使うものじゃないから

ビットが立ってる数を数えるとか、
ビットが立ってる位置を調べるとか、
バイト単位の並び替えとか、
小数から整数へ四捨五入とか、
他にいくらでも足したいものはある

628 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 22:54:34.26 ID:DO26xGrR0.net]
誰がこんなクソ言語つくったんだよ
作者はたぶんバチが当たって禿げてるはず

629 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:01:40.29 ID:nPfvfHCk0.net]
だいたい最初にアスタリスクを乗算演算子にした奴は誰だよ。

630 名前:デフォルトの名無しさん [2017/09/05(火) 23:58:08.13 ID:5KjI8r3d0.net]
ジョンバッカスだろ

631 名前:デフォルトの名無しさん mailto:sage [2017/09/05(火) 23:58:19.96 ID:qAaUk7C50.net]
operator:=とかoperator!?とか定義できるようにしてくれたら
お前らが度肝を抜くような使い方して見せるのに、残念でならない。

632 名前:デフォルトの名無しさん [2017/09/06(水) 00:21:11.51 ID:eLdBXtqw0.net]
operator?:ならマジで提案してみそ
あわよくば大手柄だぞ

633 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 00:25:00.50 ID:VYubvLfh0.net]
>>613
コンパイルエラーになろうが、ソース書くだけなら現状でもできるだろうから、度肝を抜いてくださいな。



634 名前:デフォルトの名無しさん [2017/09/06(水) 00:47:00.85 ID:eLdBXtqw0.net]
613なりのcxxfrontでも作ればいい

635 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 06:39:00.29 ID:lz1Lh31S0.net]
>>611
あなたならどれにする?

636 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 06:40:33.11 ID:lz1Lh31S0.net]
同じかどうかの比較が = ではないのが欠陥

637 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 07:17:47.41 ID:xbyXQy+0M.net]
>>615
なんか面白いこと言おうとしてるの?

638 名前:デフォルトの名無しさん [2017/09/06(水) 08:45:25.92 ID:6GspjXt70.net]
>>618
BASICのように=の意味が文脈で変わるべきだと?

639 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 08:49:59.58 ID:/Hhi3W4sd.net]
いや、代入を別の記号に
それこそ := でも

640 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 08:50:33.96 ID:ZK3Q9QYA0.net]
いやっすいやっす!代入に2タイプも使うのいやっす!

641 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 08:51:14.26 ID:DE0YQ4Kk0.net]
数学の方を現代に合わせて変えるべき

642 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 08:57:40.90 ID:zxwumig7M.net]
>>623
勝手に変えたらどう?
数学はコンパイル不要だから、最初に定義さえすればお前の使いたい記号を好きなだけ使えるよ

643 名前:デフォルトの名無しさん [2017/09/06(水) 09:44:12.68 ID:f82uiC9X0.net]
自民党の恐怖の言論弾圧が迫る! 

売国安倍は憲法改正で国民主権と基本的人権
を奪うつもりだ。 ← 民主主義の崩壊

www.data-max.co.jp/280113_ymh_02/

↑ マスコミは 9条しか報道しないが 自民案
の真の恐さは21条など言論の自由を奪うこと

自民案が通ると 政府批判しただけで逮捕されるぞ!

https://www.youtube.com/watch?v=h9x2n5CKhn8

上のビデオで 自民党は 日本人に基本的人権
は必要ないと 異常なことを平気で言う。

xn--nyqy26a13k.jp/archives/31687

↑ 都民ファーストも安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻すつもりだから
絶対に投票してはだめだ。 民主主義が崩壊する

blog.goo.ne.jp/ngc2497/e/889



644 名前:9f65988fe0f35496934dc972e2489

↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。

https://dot.asahi.com/aera/2016071100108.html?page=3
http://blog.goo.ne.jp/kimito39/e/c0dd73d58121b6446cf4165c96ebb674

↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。
国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。
[]
[ここ壊れてます]

645 名前:デフォルトの名無しさん [2017/09/06(水) 11:33:15.11 ID:Mqa6x7N10.net]
2003年8月の第1回から2007年3月の第6回までいずれも中国北京で計9次の会合が行なわれた
話し合いで解決しなかった
原爆、弾道ミサイルの開発にカネ、時間を与えてしまった
軍事力でつぶすしかないのに、まだこんなこといってる


         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 < 対話で解決しよう
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬   

646 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 12:26:18.39 ID:8RU3q9uiM.net]
>>623
数学は、最初に定義さえすれば自由にしていいんだよ。

647 名前:デフォルトの名無しさん [2017/09/06(水) 12:36:56.86 ID:/66SkMcqd.net]
話が成り立たないアホばっかりだな

648 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:29:10.13 ID:fXx7GStM0.net]
プログラミング勉強し始めた初心者ですが
手詰まりになったので質問させてください

ttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_C&lang=jp

この問題をやっていますが、以下のコードで「Time Limit Exceeded」となってしまいます
他の正解者のコード見てもやってることは同じな気がするのですが
なにがいけないのでしょうか?

C++14コード
ttp://codepad.org/2Yxb33Ab

649 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:33:28.13 ID:I6k6pGLy0.net]
多分出力のコードが間違ってる。

650 名前:629 mailto:sage [2017/09/06(水) 15:40:37.11 ID:fXx7GStM0.net]
追記です

Case#8までは「Accepted」でOKなんですが
Case#9が「Time Limit Exceeded」でした

Case#9は入力が2000000行もあるっぽいです

でも他の人とやってること自体は同じなんだから
このコードでできるはずと思い込んでしまって
何が悪いのかさっぱり検討つきません。。。

651 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:54:34.75 ID:I6k6pGLy0.net]
2個出力してみ?

652 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:55:29.34 ID:I6k6pGLy0.net]
あれ?勘違いだ。

653 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 15:59:43.73 ID:I6k6pGLy0.net]
Listそのものがそんなに早くないとかかなぁ。
デリートはO(1)で終わるけど、ポインタの付け替えとかあるから、雑に遅いカモね。
最近のコンピュータだと配列の方が早かったりする。



654 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 16:38:37.77 ID:I6k6pGLy0.net]
もしかしたら、sstringしてるのが重いかもなぁ。
cinで取れるのに何でssteamしてるのかよくわからん。

655 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 17:25:42.27 ID:I6k6pGLy0.net]
judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522632
これで通った。

656 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 17:28:16.47 ID:I6k6pGLy0.net]
judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522643
すまんこれでは通らなかった。

657 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 17:33:31.55 ID:I6k6pGLy0.net]
judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2522664#1
これは通った。

658 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 17:37:32.00 ID:I6k6pGLy0.net]
適当なこと言ってすまんかった。

659 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 18:55:53.01 ID:p ]
[ここ壊れてます]

660 名前:ROvgKjd0.net mailto: んぁ? []
[ここ壊れてます]

661 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 19:15:05.29 ID:fXx7GStM0.net]
>>630
>>632-639
ありがとうございます!

まさに>>635だったみたいです
1行ごとに入力を読み込みたいからsstream使ってたのですが
そのせいでwhileループで毎回sstreamとstringの変数を定義しているせいでした

cinとstringだけで入力を読み込むようにして
変数の定義をループの外にしたらようやく自分のコードで通りました

sstream使わなくてもstring変数の定義をループ内に書いたままにしてたら
ずっと通らなくてそれで何時間も四苦八苦してようやくすっきりしました

変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました

わざわざコーディングまでしてくださってありがとうございました

662 名前:デフォルトの名無しさん [2017/09/06(水) 21:33:01.28 ID:6GspjXt70.net]
> 変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました

ものによる
テキトーこくな

663 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 21:57:51.28 ID:P+VnvHZA0.net]
>>642
> ものによる
string だろ
話の流れも読めないのか?

> テキトーこくな
実際にやってるだろうに何を言ってるんだよ
いちゃもんつけたいだけか?



664 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 22:53:02.57 ID:OHCEwHay0.net]
変数の定義って処理なのか?

stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
Cの特権は固定長ならスタックに文字配列を確保できること。

665 名前:デフォルトの名無しさん mailto:sage [2017/09/06(水) 23:16:43.16 ID:LeFS08p/0.net]
>>644
COBOLとかFORTRANヒープの概念があるとは

666 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 00:17:30.43 ID:E8QDgFBm0.net]
デフォルトだとcinがstdioと同期取ってやたら遅かったりもする罠

667 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 02:37:57.68 ID:t89SIQGa0.net]
コンストラクタがやけに重いクラスとかあるんだよ、標準でも。

668 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 06:02:40.83 ID:sowmLjiv0.net]
C++のstream関連は全て糞
operator<<()の多重定義で自作クラスのフォーマット文字列化(stringizing)ができる、というのがちょっと嬉しかったけど
しょせんコードの見かけだけの話やし、実行速度は速いし改造もしにくい、
(printf()ならvprintf()を使って関数1個書けば良いところをstd::streambufの派生クラスを作る羽目に、、
 行単位の排他とかの作り方を比べたらワカル

だいたい一般に1つのクラスに対して一般に
 (1) 人間が読むためのフォーマット文字列化
 (2) ストレージか何かへのシリアライズ
 (3) ストレージか何かからのデシリアライズ
の3つの要求が生じるのに対してoperator<<()とoperator>>()の多重定義の2個では数が足りない
だったら上記3メソッドのインターフェースを全部Cのstdioベースで実装して済ませるわ;

とにかくC++の中にあってstreamはパフォーマンスよりもコードの見かけに拘ってみました感が異端

669 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 06:46:38.33 ID:9W4DbE9gM.net]
>>644
> 変数の定義って処理なのか?
コンストラクタって知ってるか?

> stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
そもそもstring型はすべての言語にないし文字列型と言う意味ならFORTRAN77のように固定領域にとる言語もある

>>645
モダンなバージョンなら普通にあるでしょ
Fortran ⇒ Allocate 文
Cobol もオブジェクト指向になってるぐらいだからあると思う

670 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 07:52:40.01 ID:E5YdMpMh0.net]
相談室ということで
C++でディープラーニングのライブラリといったらTensor Flowとtiny dnn以外にあります?

671 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 08:09:04.47 ID:6e0QaN8o0.net]
>>650
ソニーから nnabla だったかな

672 名前:デフォルトの名無しさん [2017/09/07(木) 08:40:05.33 ID:BwtgUJJf0.net]
ライブラリなど不要

673 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 12:48:57.45 ID:ccNhwHbvd.net]
学習など不要



674 名前:デフォルトの名無しさん [2017/09/07(木) 12:51:16.16 ID:m/W0Vwq0M.net]
>>648
おちつけ。

> 実行速度は速いし改造もしにくい、

> だいたい一般に1つのクラスに対して一般に

675 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 15:45:42.89 ID:lWzPhy/F0.net]
>>649
つまりインスタンス生成を「変数の定義」って言ってるのか。分りにくいな。

676 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 16:59:31.64 ID:WeVFjmVDd.net]
宣言でなく定義ならそういうことだろう

677 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 17:17:37.39 ID:E5YdMpMh0.net]
>>651
ありがとうございます
調べてまいります

678 名前:デフォルトの名無しさん mailto:sage [2017/09/07(木) 23:11:06.34 ID:sowmLjiv0.net]
でけた!
ttp://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2524752#1

>>654
スマンorz

679 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 10:17:30.47 ID:28eiJ4Rm0.net]
>>658
お、ちょっと早いな。

680 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 21:05:50.39 ID:VlEBq8a5M.net]
>>648
モダンな言語の多くはprintfライクだし、javaも結局追加された。
printfライクのほうが効率的なことは経験的にわかってるのだからstreamにイマドキのformat関数を追加してくれればいいのに。

681 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 21:16:51.55 ID:EwiEYpeM0.net]
もっと50 msばかり速くすた、
ttp://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2526468#1

682 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 22:55:01.80 ID:EwiEYpeM0.net]
さらに1桁速くしたわふーん(0.65 sec → 0.06 sec)
ttp://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2526595#1

メモリ消費量も1/4未満になた、(34520 KB → 7432 KB)

683 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 14:52:21.58 ID:4g0rauvm0.net]
>>662
それって双方向連結リストなの?



684 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 19:52:47.52 ID:FtyOtgZ20.net]
https://ideone.com/aKaZF9
これ、なんで通らないの?
頭爆発しそう。

685 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 20:19:57.93 ID:FtyOtgZ20.net]
あぁ、色々いじってたら通った。
わけわかめ。

686 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 20:23:23.69 ID:FtyOtgZ20.net]
と思ったらイデオンGCCで動かねーでやんの。

https://ideone.com/oqpQ8i
VC2017では動く魔法のコード。

687 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 20:39:58.02 ID:iTjZctD80.net]
もちつけ https://ideone.com/czcAS9

688 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 20:47:48.75 ID:FtyOtgZ20.net]
うほ。素晴らしい。
が、今度はVCで動かなくなった。
なんじゃそれ。

689 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 21:07:39.82 ID:FtyOtgZ20.net]
なんか、VCもGCCも半分くらいずつ間違えてる予感。
Setだけだとストレージがないからなんかバグの予感するし。
ストレージ持たせようとすると修飾が間違ってるって言われてる感じがする。
なんだこれ。

690 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 21:15:58.82 ID:FtyOtgZ20.net]
識者求!急募だ!!

691 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 21:53:02.98 ID:FtyOtgZ20.net]
https://ideone.com/mqTzb8
これで手打ち。
よくわからん回り方されたなぁ。
とほほほ・・・。

692 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 21:58:32.95 ID:FtyOtgZ20.net]
最後に。さんきゅーそー。

693 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 23:23:25.26 ID:iTjZctD80.net]
VC++のバグ…ではなくいつもの標準非準拠の独自仕様の気はする
https://ideone.com/10vEzK



694 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 00:32:56.15 ID:8Jhjgi9Q0.net]
>>673
およ、折衷案できそうか?
自分はVC動けばいいんだけど、
コード公開するときに動かないと間抜けっぽいから良対応しようと一応やってる。
visualデバッガが便利すぎてVCやめるの大変。

695 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 00:56:23.48 ID:ldnMOHDz0.net]
デバッガのフロントエンドは自作するもの

696 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 00:57:46.72 ID:9qoMDsB9r.net]
完全な解決策も規格の規定も知っているが、
再現する最小限のコードにしてから他人に見せる知能も持ち合わせていない者には時間の無駄

697 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 02:34:17.64 ID:8GGB49VK0.net]
非修飾名

698 名前:フ探索の問題だから発想を変えて明示的修飾で回避すればいいって話?
https://ideone.com/YTnOF2
[]
[ここ壊れてます]

699 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 06:00:54.71 ID:Jp2o0TJ00.net]
templateの使い方を完全に勘違いしてやがる。

700 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 07:35:26.76 ID:8Jhjgi9Q0.net]
折衷案色々あるなぁ、感心する。

>>676
別に個人のコードでどこかに迷惑かけてるわけじゃないし、この程度のコードも読めない方が問題。
それに高慢なお方は最初から相手にしてない。マウントしてほしくてやってるんじゃないんだよ。

701 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 07:49:26.32 ID:8Jhjgi9Q0.net]
https://ideone.com/Ofcm9I
>>677を採用。これで解決しました。
明示の仕方がいまいちよくわかってなかった。
大変ありがとうございました。

702 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 10:50:41.00 ID:Ch3ZHKVB0.net]
プロパティー実装例か…
しかしまぁクソ面倒だ罠

703 名前:はちみつ餃子 mailto:sage [2017/09/11(月) 21:22:51.45 ID:+dEH7rh50.net]
auto で受けるとおかしげなことになるんちゃう?



704 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 01:44:38.63 ID:uA5S/Coo0.net]
馬鹿に触らせるなテンプレートって昔から言うしな。
フレームワークのテンプレートライブラリ提供する側だけが使っていいんだよ。

705 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 08:52:24.85 ID:n2tkiU0+0.net]
テンプレートはSTLやboostのまねをしていれば下手なことにはならないはずだが

706 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 08:56:45.99 ID:aShF6cdKa.net]
真似するだけでも、それなりのスキルが必要だ

707 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 09:35:13.31 ID:M9yu8us30.net]
何故そういうコードになっているかを理解せずに猿真似して意味があるかどうかはわからんけど
autoで受けるとおかしなことになるのは、キャストや代入で望む結果を得る方法(expression templateなど)全部そう
暗黙のキャストでなく関数呼び出しを強制すればautoでも大丈夫だけど

708 名前:デフォルトの名無しさん [2017/09/12(火) 10:11:33.04 ID:CGKPtYms0.net]
> 馬鹿に触らせるなテンプレートって昔から言うしな。

自分が触りたくないのはわかったから

709 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 19:29:46.28 ID:mgCIj6GX0.net]
>>682
コピコン切ってあるから大丈夫だと思う。あとは推論性能。

710 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 19:43:33.31 ID:8IhLGzTX0.net]
コピコン

711 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 20:29:35.11 ID:mgCIj6GX0.net]
コピーコンストラクタ!

712 名前:はちみつ餃子 mailto:sage [2017/09/12(火) 22:54:11.94 ID:cQiNwo4o0.net]
>>688
あ、なるほど、状況を勘違いしてた。

C++17 からは RVO が使える場合は常に RVO で処理する (従来は「してもよい」というオプショナルな動作) ことと、
そのときはコピー (ムーブ) コンストラクタが無くても良いというルールが念頭にあったのだけれど、
この場合は RVO は関係なかった。 スマソ

713 名前:デフォルトの名無しさん mailto:sage [2017/09/12(火) 23:35:09.46 ID:q3PtGkEdr.net]
>C++17 からは RVO が使える場合は常に RVO で処理する

ほうほう、それは本当ですか



714 名前:はちみつ餃子 mailto:sage [2017/09/14(木) 16:51:14.81 ID:HER/jB+d0.net]
そうです。

715 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 17:39:29.28 ID:7On5vAcFr.net]
>>693
だとすると
https://wandbox.org/permlink/KeuEcKR5gy18bi3K
この二つのアドレスは同じになるはずでは?

716 名前:デフォルトの名無しさん [2017/09/14(木) 22:59:53.42 ID:AfykdPhZ0.net]
いい流れだ

717 名前:デフォルトの名無しさん [2017/09/15(金) 15:29:03.53 ID:zUPCfesd0.net]
"clacla.h"
class Clacla {
void func1();
void func2();
void func3();
};

"clacla.cpp" //実装部
クラスClacla くくり { <-ここ
void func1() { printf( "1" ); }
void func2() { printf( "2" ); }
void func3() { printf( "3" ); }
};
のように関数の実装時にClacla::を省

718 名前:ェする方法ってあるでしょうか? []
[ここ壊れてます]

719 名前:はちみつ餃子 mailto:sage [2017/09/15(金) 15:33:45.29 ID:leF15WXE0.net]
>>694
最適化が有効なら C++17 であろうがなかろうが clang なら RVO が効くはずだけど、 u.p の値は null になっちゃうな。
RVO がどうこうじゃなくて this の挙動に関するなんか変なルールが適用されてるとかかも?

720 名前:片山博文MZ mailto:sage [2017/09/15(金) 16:07:51.71 ID:RQr5TBB1d.net]
>>696
クラス内部にインライン関数を埋め込む方法しかない。

721 名前:696 [2017/09/15(金) 16:35:44.21 ID:zUPCfesd0.net]
>698
やっぱり無いですよね。
ありがとう。

722 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 21:02:35.06 ID:86K7wrSvr.net]
>>697
いやだからISO/IEC DIS 14882:2017 15.2/p3の規定により常にRVOが働くわけではないのではないかと申しているのですよ
ついでにu.pがnullptrになることはない

723 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 21:24:40.19 ID:xDlOGQNS0.net]
実にC++相談室らしい流れ



724 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 21:27:27.94 ID:5X/IRSU20.net]
右辺値参照の暗黙適用は例外の処理で不都合があるよね
元の値をTmpにコピっといて例外発生で書き戻すにしても
関数A処理内で呼び出した関数Bからの例外をAのユーザコードでは完スルーなのに
コンパイラコードではコッソリ捕まえて書き戻す必要が有る
そんときロックでも掛かってたらどーすんのよと

呼び出し繋がりを横断的に管理要するとんでもないコスト増なんじゃね?

725 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 21:36:23.16 ID:xDlOGQNS0.net]
Tmpのアドレスを関数B(およびその先の関数)が知る可能性がコンパイラから見て排除できない限り
関数Aから関数Bを呼び出す前にTmpは元の値の完コピーにならざるおえないのでは…
(そうでなければ副作用のある関数を安全にコンパイルできない&安心して書けない

さらにロックに入るときと出るときは上と同じ理由で結果的に完コピーになる上に、
まともなOSならメモリバリアまで手当てしてくれるんじゃ…

726 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 21:42:30.18 ID:xDlOGQNS0.net]
つまり右辺値参照の暗黙適用が効力を持つのはスゲー広範にインライン展開されるような場合
(当然いかなるOSのAPIやシステムコール類の呼び出しも含まない
「だけ」
であって、通常のプログラマーにはあんまありがたみがはっきりしない仕様

※ 個人の感想です

727 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 22:02:45.85 ID:1aOT1P+6d.net]
コンパイラに頼らないで、素直にパラメーターの参照にしよう

728 名前:はちみつ餃子 mailto:sage [2017/09/15(金) 22:04:08.03 ID:leF15WXE0.net]
>>700
意図するところをあらためて説明すると、
最適化オプションを有効にする (RVO が効くはず) と実際に null になるんだから
clang があてにならないのじゃない? という話。

729 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 22:08:16.65 ID:5X/IRSU20.net]
いや noexcept 付きを呼ぶ場合も有難味あると思うよ
C++は const祭りに noexcept祭り追加でござる
特殊化も爆発

730 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 22:34:11.14 ID:1joZngjnr.net]
>>706
なるほど理解した
C++11の頃に輝いたclangはその後、規格的にはG++にも劣るゴミなのでそのへんは致し方ない

731 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 11:22:55.52 ID:u7cVvkyR0.net]
forward祭り

732 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 10:24:11.11 ID:lVEmBRA9d.net]
tcp/ipの勉強のためにC++で何か作れば勉強になるかな?って思ってるのだけど
こういうものを作れば勉強になるよってものある??
パケットの動きだったり階層の考え方だったりを学びたい

733 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 10:40:29.87 ID:U79GLBVsM.net]
>>710
TCP/IPの勉強ならWireSharkの使い方覚えた方が早いかも
その上のプロトコルレベルなら勉強したいプロトコルの簡単なクライアントから始めればいいと思う
ちなみに俺はNetNewsに流れるむふふ画像を取り込みたかったのでnntpのクライアントをperlで組んで勉強した



734 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 11:05:46.29 ID:lVEmBRA9d.net]
>>711
プロトコルレベルの勉強をしたい
そうなるとhttpサーバを立てることになるのかな?
そういう場合は簡単なhttpサーバとクライアントを作成すれば良いのかね?
それで通信しあってwiresharkで中身を見てtcpだったりhttpだったりを見るべき?

735 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 11:39:07.40 ID:9mrqYCJU0.net]
おれは一昔前、深夜ボリュームでかくする姉貴のPCが煩くてTCP通信でマスターボリューム弄るサーバー&クライアント作ってコッソリ仕込んでコントロールしてたな。
まぁ、やってやるぞというモチベーションは大事だとおもうよ。
ガンバってね。

736 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 11:41:39.15 ID:qrTqFTlir.net]
>>713
それ仕込んでるとき超ワクワクしそう

737 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 11:43:19.16 ID:lVEmBRA9d.net]
>>713
姉貴のパソコンにサーバプログラム常駐させる
そいつがポートXXXで待ち構える

同じ家なのでネットワーク帯は同じで
自分のpcからポートXXXにメッセージ送信する

姉貴のサーバプログラムが受け取ってボリューム下げる処理をする

こんなことしてたってことかね?

738 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 12:01:08.52 ID:9mrqYCJU0.net]
>>715
まぁ大体そんな感じなんだが、急に音量小さくすると即効でばれるので、まず、姉貴PCの音量を取得するのが第一だな。
そこからスライダーでボリューム下げていった値をサーバーに順次送信しサーバープログラムがその値に応じて音量を徐々にフェードコントロールするといった具合だな。

739 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 12:08:20.13 ID:nt0hX0ohr.net]
>>716>>715の三人きょうだいの次女である可能性が否定できない

740 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 12:10:35.92 ID:lVEmBRA9d.net]
>>716
いつも音量小さくなってたのはあんたのせいだったのね??


ってことはそれって通信はhttp?

741 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 12:15:30.74 ID:9mrqYCJU0.net]
>>718 http関係ない
ボリュームと改行の平文を繰り返し送るだけの超簡易仕様
だれでも作れる

742 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 12:57:21.32 ID:lVEmBRA9d.net]
>>719
相互にsend recvしてるだけってことかな

743 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 13:48:18.24 ID:U79GLBVsM.net]
>>712
サーバーよりクライアントの方が簡単だからサーバーは適当な奴持ってきて簡単なクライアントを作るところから始めればいいと思う



744 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 14:27:41.23 ID:lVEmBRA9d.net]
>>721
IISサーバとかってことかな?
あの辺の使い方も基本は同じよね?
ポート指定して使うみたいな

745 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 15:08:42.19 ID:eqWC6Q8G0.net]
>>722
> IISサーバとかってことかな?
環境ならWindows IISが簡単だろうね
ネットでググれば情報たくさんあるし

746 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 17:35:56.07 ID:UWkHQHZA0.net]
そもそも、TCP/IPの練習にC++は妥当なのか?

747 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 17:55:46.62 ID:lVEmBRA9d.net]
>>724
CとC++しか言語知らんのや...
IISサーバーと通信できない
これのポートとかどう設定するんや...

748 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 18:29:11.61 ID:Of28e9o20.net]
ネットワークライブラリは現在策定中だっけ。

749 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 18:34:59.92 ID:HogVByKA0.net]
>>725
以前ネットワークプログラム勉強するのにこのサイト利用させてもらった
わかりやすいと思う

x68000.q-e-d.net/~68user/net/

750 名前:デフォルトの名無しさん mailto:sage [2017/09/18(月) 20:33:20.53 ID:lVEmBRA9d.net]
>>727
今読み始めたけど丁寧でわかりやすい

751 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 10:23:20.37 ID:mIuFgC1Fd.net]
初歩の初歩の初歩の質問なんだけど
あるPCにポートXXを口とするサーバソフトを同時に二つ立てることはできないよね?
1つめはXXを使うとしてその後にたてられた2つめはどうなる?
(スレチっぽくなってますがよろしくです...)

752 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 10:38:02.75 ID:S6233VLa0.net]
出来ます
サーバー側はリクエストに応じて複数のプロセスを起動し、
同じポート番号を使って複数のプロセスが受け答えします
各プロセスはそれぞれで生成したソケットを使ってクライアントとやり取りします

753 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 10:57:49.02 ID:mIuFgC1Fd.net]
>>730
それってプログラム内でforkして子プロセスを作る場合の話です?
サーバソフトAとサーバソフトBの両立ができたとすると
ポートXX使用します!ってのはどこでどちらを使うと判断するのでしょうか...



754 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 13:04:43.06 ID:TdcUa1CK0.net]
特定ポートでlistenするプロセスは一つだけです。
複数のプロセスで共用は出来ません。

755 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 17:39:27.17 ID:5tfXl8chM.net]
>>729
LANポートが複数あればできるし、LANポートがひとつしかなくてもIPアドレスを複数割り当てられるなら可能

756 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 18:44:47.92 ID:PcYxkZC90.net]
>>733
ああ言えばこういうの典型
どうでもいいけどC++と関係ないクソ話もうヤメロよカスども

757 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 18:49:41.83 ID:Poc3cQP+M.net]
しかも間違ってるという

758 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 18:57:54.46 ID:5tfXl8chM.net]
>>735
ん?
どこか違ってたっけ?

759 名前:デフォルトの名無しさん mailto:sage [2017/09/19(火) 19:48:42.76 ID:SHe+skknr.net]
>>736
二つ前のレスくらい読んでほしいものだ

760 名前:デフォルトの名無しさん [2017/09/19(火) 20:12:29.29 ID:4ZFv917O0.net]
C++98ではできない
C++11以後できるようになった
だろ、通信は本質的にマルチタスクだ

761 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 00:14:27.26 ID:zNeStlMI0.net]
なにをいってるかよくわからんがすごい自信だ。

762 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 01:48:22.84 ID:E2xZjesx0.net]
規格外のライブラリならほぼ何でもありといえばありだけどさ。
ライブラリ自信はまだ策定中でしょ。

763 名前:デフォルトの名無しさん [2017/09/20(水) 03:12:29.17 ID:E3lPvo/Y0.net]
bind()する時のローカルのIPアドレスを別々にすれば同一ポートで別々のサーバプログラムって動かないの?



764 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 04:49:07.58 ID:uOAr6bd90.net]
>>741
だから動くってば
ユニークである必要があるのはIPアドレス:ポート番号の組み合わせだから

>>730
>各プロセスはそれぞれで生成したソケットを使って
まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?

いずれにせよこんなのはネットワーク初心者の話題であってC++とは何も関係ない

765 名前:デフォルトの名無しさん mailto:sage [2017/09/20(水) 06:46:32.53 ID:k3KNfXHnM.net]
>>737
それが間違ってるって話
>>741が言うようにローカルアドレスを指定すれば同じPCで同じポートを使用するサーバーを複数立てられる

766 名前:742 mailto:sage [2017/09/20(水) 10:56:07.53 ID:uOAr6bd90.net]
自己訂正
>まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?
あはは、これは俺の勘違いだったわ
acceptで返されるソケットはlistenポートと同じポート番号を持っている

767 名前:デフォルトの名無しさん [2017/09/21(木) 05:09:49.50 ID:t8iqXrAz0.net]
質問です。

{ 10/*%*/ } = { a,b,c };

というのは、
a = 10%
b = 10%
c = 10%
なのでしょうか?それとも、
a+b+c = 10%
なのでしょうか?

768 名前:デフォルトの名無しさん [2017/09/21(木) 05:48:27.92 ID:eSaSp7RC0.net]
C++を習得するのに莫大な時間を費やしました。

C++のプロフェッショナルなプログラマーになりたかった。

なのに、ハード系の知識が無いと言う理由で、もらう仕事はVB.NET、C#.NET系ばかりでした。

769 名前:デフォルトの名無しさん [2017/09/21(木) 05:51:26.56 ID:eSaSp7RC0.net]
質問を書くのを忘れやんした。

C++の仕事ってハード系、通信系、制御系以外、通常業務のシステム開発はないんでしょうか?

770 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 06:00:29.19 ID:Bo0/1phe0.net]
ポート重複で同じアドレスでBananaサーバーみたいなラックマウントサーバーの仕組みってあれは一つのサーバーがlistenで待って接続してきたクライアントの処理を複数の子サーバーに割り振っているだけなのか?

771 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 08:18:42.29 ID:E1HbcZFyr.net]
struct unko { unko()=delete; };
int main() { unko u{}; }

何故コンパイルが通るのかを理解するのに半日かかった
やはりこの言語はクソ

772 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 08:46:59.52 ID:iktVOuYO0.net]
>>746
他人から降って湧いてくることしか期待してないからそうなる
自分がやりたいことは自分で始めろ

773 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 10:13:00.29 ID:JjsSVLys0.net]
>>747
C++はC#とかでできないことがあるときに仕方なく使うイメージがある



774 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 11:36:34.81 ID:p6kNBh4ir.net]
>>749
あれ
何で動くんだ?
plain old dataあたりの話が噛んでる?

775 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 12:35:00.95 ID:iktVOuYO0.net]
C#の方が楽なところが特に無いのでC#という選択肢が無い

776 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 13:21:38.51 ID:TbHBi0+x0.net]
>>752
PODがかかわってる部分はあるけど基本として理解しておくべきことは
=default,=delete指定はコンストラクタの宣言でも定義でもない
ということ

つまり>>749の文脈では
struct unko { unko()=delete; };
int main() { unko u{}; }

struct unko {};
int main() { unko u{}; }
と等価でありuはaggregate初期化されコンストラクタは呼ばれないからエラーにならない
(unko();みたいにはっきりとデフォルトコンストラクタが呼ばれる状況ならエラーになる)

777 名前: mailto:sage [2017/09/21(木) 16:15:38.61 ID:na02B6ss0.net]
>>750
お、おう!

778 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 17:36:23.55 ID:E1HbcZFyr.net]
>>752
規格によると unko u{}; は
8.5/p17『If the initializer is a (non-parenthesized) braced-init-list, the object or reference is list-initialized』によりリスト初期化される
リスト初期化は8.5.4/p3『If T is an aggregate, aggregate initialization is performed』
に該当するのでコンストラクターが呼ばれずにaggregate初期化される。

なおaggregateの定義は8.5.1/p1により『array or a class (Clause 9) with no user-provided constructors (12.1), no (略)』
ここで8.4.1/p1により「=delete」は関数本体だが、
8.4.2/p5によりuser providedではないと見なされている(たぶん)

779 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 22:11:37.04 ID:VzX3yrPwM.net]
>>748
パケットレベルで振り分けたり、プロキシとして動作したり色々
ロードバランサ 仕組み
とかでググるがよろし
あとそこまで行くと完全にスレチなので

ネットワーク
mevius.2ch.net/hack/

とかに行っとくれ

780 名前:デフォルトの名無しさん mailto:sage [2017/09/21(木) 23:20:34.43 ID:Bo0/1phe0.net]
ほほう

781 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 11:36:40.13 ID:2CJ5RW/30.net]
>>747
20年前は普通にあった、ていうかそれしか方法がなかったが
今はもっと楽な方法があるのでほぼ無くなった

僅かな例外はパフォーマンスを求めるようなプログラムを作る場合だが
それでもライブラリなどの表から見えない部分の作成に限られる

782 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 21:53:53.16 ID:DdQqqOWmH.net]
各添字が 1 から X まで動く多次元配列を一次元で
A[i + X*j + X*X*k]
のように表しているのですが、この多次元配列の各添字を入れ替える操作を頻繁に行うので、関数にしたいです。
どのようにするのが良いでしょうか。

たとえば
f(A, B, 2, 3, 1);
のように引数をとって B という配列に
B[j + X*k + X*X*i] = A[i + X*j + X*X*k]
と要素を入れたいです。

「2, 3, 1」を関数の中で解釈する方法も分からなくて困っています。

783 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:14:21.88 ID:dWsmcDp10.net]
>>760
その例だと A[X][X][X] の3次元相当だけど3次元限定でいいの?



784 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:34:01.05 ID:qTNnvPi+0.net]
https://ideone.com/x9PCnt
こんなんでええやろ

785 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:36:10.87 ID:dWsmcDp10.net]
>>760
こういう解釈でいいかな?

template <typename T, std::size_t X>
void fillA2B(T (&A)[X*X*X], T (&B)[X*X*X], int ax1, int ax2, int ax3)
{
int i, j, k;
int& ii = (ax1==1)? i: ( (ax1==2)? j: k );
int& jj = (ax2==1)? i: ( (ax2==2)? j: k );
int& kk = (ax3==1)? i: ( (ax3==2)? j: k );
for ( i = 0 ; i < X ; ++i )
for ( j = 0 ; j < X ; ++j )
for ( k = 0 ; k < X ; ++k )
B[ii + X * jj + X * X * kk] = A[i + X * j + X * X * k];
}

int main()
{
const int N = 2;
int A[N*N*N], B[N*N*N];
int n{0};
for ( int a = 0 ; a < N*N*N; ++a )
A[a] = n++;
fillA2B<int, N>(A, B, 1, 2, 3);
fillA2B<int, N>(A, B, 2, 3, 1);
fillA2B<int, N>(A, B, 3, 1, 2);
return 0;
}

786 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:38:24.75 ID:cFmXNXGU0.net]
左辺が j, k ,i 右辺が i, j, k のようだが

787 名前:デフォルトの名無しさん mailto:sage [2017/09/23(土) 22:45:31.08 ID:dWsmcDp10.net]
あ、一気に全要素にFillしなくてもいいのかな?

788 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:03:03.61 ID:7FyCscw80.net]
……素直に3次元の配列にすりゃあいいんじゃねえのかなコレ
どーーーしても1次元にしなきゃいけない重大な理由が背後に控えてんのかな?

789 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:08:42.25 ID:xnpjieyid.net]
普通にメモリ確保したら1次元だからな

790 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:21:25.13 ID:J5lzydll0.net]
B[ii][jj][kk] = A[i][j][k];
でも通るな

791 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 00:25:12.68 ID:QX+6yKIgH.net]
>>761
もちろん任意の次元を一度に扱えたら最高です。
ゆくゆくは各添字の次元を変えることも考えています。

>>762>>765
すみません。
全要素を並び替えたいです。

>>766
カラムメジャー、ロウメジャーを任意にしたいという背景があります。
また、各添字の次元が本当は任意であるということもあります。

>>763
ありがとうございます。
確かにこれで>>760はできそうです。
パーミュテーションの実装の仕方が分かりました。
原理的にはこれで任意の添字の数、次元に対応できる (それぞれ関数を作る必要はある) と思うのですが、もっとアカデミックな方法ともあるのでしょうか?

792 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 02:35:34.07 ID:0uAENq5F0.net]
>>769
アカデミックは知らんが一般化するなら
B[ i*bi[0] + j*bi[1] + k*bi[2] + ... ]
と各次元ごとの係数を変数にして設定だな
>>760のたとえばでは bi[0] = X*X, bi[1] = 1, bi[2] = X

あとはインターフェイスにあわせてヘルパ処理を用意すればいい
f(... int x, int y, int z)
int bi[3];
bi[x - 1] = 1;
bi[y - 1] = X;
bi[z - 1] = X*X;

793 名前:デフォルトの名無しさん mailto:sage [2017/09/24(日) 17:29:12.46 ID:vw1eQBGxr.net]
>>770
ありがとうございます。
あとは任意個数の引数を取れるようにすれば添字がいくつあっても、各添字がどのように走っても一つの関数で対応できますね。
勉強になりました。



794 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 00:05:50.55 ID:KE0eJu6Z0.net]
C++とほとんど関係ないな

795 名前:デフォルトの名無しさん [2017/09/25(月) 10:20:39.11 ID:c/fcx1bx0.net]
任意個数の引数って、まさか省略記号と可変個数実引数では・・・
と思ったらモロじゃねえか おいおい
このスレ的にはinitializer_listやtemplate parameter packだろ

796 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 11:38:31.09 ID:VZWzPiEFd.net]
>>773
template parameter pack って variadic template と同じもの?
後者の呼び方には馴染んでるんだけど。

797 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 12:51:53.80 ID:ML1gBCAMM.net]
>>774
同じ

798 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 16:12:14.99 ID:b+XdOI/H0.net]
>>773
ほっといたっていずれ覚えるだろうに何故押し付けるのか

799 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 17:17:22.88 ID:RnBeI/QIM.net]
>>776
より良い代替案があるんだったらそっちに誘導すべきだろう。
実際使うべきじゃないし。

800 名前:デフォルトの名無しさん mailto:sage [2017/09/25(月) 18:34:40.87 ID:iFpSSPyJr.net]
>>774
違う

801 名前:デフォルトの名無しさん [2017/09/26(火) 10:35:57.85 ID:DAuKDJeY0.net]
>>776
このスレ的にはって書いてあるのが読めてないのか
自分が苦手なものに触れられたくないのか
どっちだ?

802 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:02:34.83 ID:XbrOuhiT0.net]
>>779
最近お前みたいなニワカが増えてうんざりするわ
というかCの可変長引数がどこに出てきた?

803 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:38:28.30 ID:XSwUFkBD0.net]
つかぬことを伺いますが、
あるクラス内で定義した構造体を同クラス内でstatic constメンバとして宣言し、
外部で定義しようとしたところ、「〜との互換性がありません」と出て上手く行きません
どうすればよいのでしょうか

〜ヘッダ内
class Hage{
public:
struct A{
int a;
int b;
};

static const struct A M;

}

〜ソース内
#include "ヘッダ"
const struct A Hage::M; //不正



804 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:39:54.54 ID:XSwUFkBD0.net]
あ、行頭の半角スペース消されるの忘れてた

805 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:48:05.08 ID:XbrOuhiT0.net]
const struct Hage::A Hage::M;

806 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:48:55.33 ID:r3ztyMSNd.net]
>>781
少なくとも Hoge::A としなけりゃダメなんじゃないか

>>771を読んでもCの可変長引数とは決めつけられなかった

807 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 11:51:53.92 ID:XSwUFkBD0.net]
うわあ何でこんな初歩的なことに躓いていたんだアホらしい
>>783-784サンクス

808 名前:デフォルトの名無しさん [2017/09/26(火) 15:18:58.40 ID:SDiSqFpw0.net]
###HUM###
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END

809 名前:デフォルトの名無しさん [2017/09/26(火) 15:24:00.47 ID:DAuKDJeY0.net]
>>780
うわーおまえ、それ人に聞かなきゃ判んねえの?

省略記号は右端という初歩の初歩でミスりながら
ドヤってる笑い地獄が2日前あったんだが
突っ込めなきゃせっかくボケた芸人も泣いてるだろうな

810 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 16:32:49.03 ID:XbrOuhiT0.net]
>>787
まずはsageることから覚えような

811 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 16:36:37.77 ID:r3ztyMSNd.net]
>>773の「モロじゃねえか」がどっから出てきてるのか謎だ

812 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 17:08:16.18 ID:XbrOuhiT0.net]
多分Cの可変長引数なら右端以外にも書けると思ってんじゃないかな

813 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 18:55:18.16 ID:DXd+nok20.net]
こんなイメージかな?
#define X (100)

#define f(a,b,c,d,e) ((b)[(c)+X*(d)+X*X*(e)] = (a)[(e)+X*(c)+X*X*(d)])



814 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 19:31:39.64 ID:T9NefDHyr.net]
>const struct A Hage::M; //不正

初歩的でなく相当に高度な気がしてならない
規格の3.4.1/p7,p8,p14あたりを頭に入れていないといけない
「class NS::C;」のように何でも「::」を付ければ良いと言うわけでもないので

815 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 22:59:17.35 ID:pvKSJMRt0.net]
そうでもない

816 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 23:10:02.38 ID:28pSalnA0.net]
だってグローバルスコープにも struct A; が存在したらどうなるか?
って考えればすぐわかりそうなモノじゃんね

817 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 23:33:07.57 ID:QYZ1C1Pk0.net]
グローバルが優先される所と、グローバルよりクラスや名前空間が優先される所が入り乱れたこの言語で
どちらが優先なのかを正確に覚えてるのはかなりの変人である可能性が高い
https://ideone.com/RZTBk7

818 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 23:48:01.42 ID:piJXswiP0.net]
グローバルが優先するところなんてあったか?

819 名前:デフォルトの名無しさん mailto:sage [2017/09/26(火) 23:48:58.27 ID:28pSalnA0.net]
>>795
その例ではいったんA::の中に入っているから B はA::B になるけど
>>781 のはそうじゃないからな。

820 名前:デフォルトの名無しさん [2017/09/27(水) 00:14:02.46 ID:LyDwKMB00.net]
>>788
おーいバカ、省略記号の位置の件はわかったか?
まさか789なみの重度池沼じゃねえよな

821 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 00:41:37.58 ID:lz0JexH90.net]
>>771>>770を参考にして新たに考えようとしてるじゃないか。
それを>>770のやり方でまんま行こうとしている、と解釈するのは悪意があるぞ。

822 名前:デフォルトの名無しさん [2017/09/27(水) 00:57:18.03 ID:LyDwKMB00.net]
だからって770の大ボケを正当化する法はあんめえ

823 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 07:53:47.82 ID:Ep3hxvTm0.net]
あんめえ



824 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:12:11.59 ID:nsBNhogE0.net]
>>800
お前まだ分からんのか・・・
>>770のどこが大ボケなんだよ
添え字演算子の中で二項演算子の後に省略記号書いて再帰的に計算させたり
パラメータパック(またはそれを含む式)も無しに引数の左端にいきなり省略記号書いたり
なんてのはCでもC++でも出来ないの
お前みたいにCの可変長引数もvariadic templateも分かってるつもりなら
>>770を見た瞬間にこれは文面上の省略であって動くコードではないと一瞬でわかるはずなんだよ

質問でもないのにageまくるわ自分も初心者のくせして同じ初心者(あるいはそれ以上)を聞きかじりの知識でバカにしようとするわ
憂さ晴らしにしか利用しないのなら出ていけ

825 名前:デフォルトの名無しさん [2017/09/27(水) 09:30:35.39 ID:LyDwKMB00.net]
文面上の省略だっておw
大ボケに苦しい言い訳を上塗りして
アフォから超アフォに進化したなあ

826 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 09:41:27.37 ID:nsBNhogE0.net]
>>770じゃないよw

827 名前:デフォルトの名無しさん [2017/09/27(水) 10:03:04.41 ID:LyDwKMB00.net]
どう見ても770だな
必死さの理由が他にない

828 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 10:19:41.03 ID:Ls/Jbx6+0.net]
ワッチョイも知らないアホじゃん

829 名前:デフォルトの名無しさん [2017/09/27(水) 11:12:43.27 ID:LyDwKMB00.net]
驚いた、ム板にIP信者がいるとはね
嘆かわしい限りだ

830 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:41:32.93 ID:/eBNIii1d.net]
>>800
だったら>>771をターゲットにすればよかったんだよ
お前は>>770をも貶し続けていると見なされていたんだよ

831 名前:デフォルトの名無しさん mailto:sage [2017/09/27(水) 11:42:15.16 ID:/eBNIii1d.net]
>>808
間違えた、逆だ []
[ここ壊れてます]

833 名前:デフォルトの名無しさん [2017/09/27(水) 14:47:33.57 ID:LyDwKMB00.net]
大ボケ+言い訳+IP信者+錯乱

この安定したアフォぶりは、どう見ても同一人物だなw



834 名前:デフォルトの名無しさん [2017/09/29(金) 01:30:30.30 ID:ppl3WHHK0.net]
%%%3%%%
000-DOK<NAZE-0.8112162>
001-3800%\73NMB/1,81,2,NB"IKKI"%
002-91.81%ML7"8.122231746668193,43@ML.4@"%^23.1444
003-1.33321444718%"YLD""SO"%{71.%{62.1339816{331.422231765%<<<NL6
004-LOOP%Go To"000"%

VCL

835 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 22:15:16.68 ID:7WUGaaf40.net]
javaやc#しかやったことないような人間がc++でもメモリ管理をきちんと身につけるには何から始めるのが手っ取り早いでしょう?

836 名前:デフォルトの名無しさん mailto:sage [2017/09/29(金) 23:55:16.07 ID:7WUGaaf40.net]
そもそもみんなc++で何してるの?🤔

837 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 00:49:06.72 ID:Yf3yOiqk0.net]
人工知能ゥ・・・

838 名前:はちみつ餃子 mailto:sage [2017/09/30(土) 00:56:27.58 ID:H54Xn+Px0.net]
>>812
C++ ではなるべくスマートポインタを使って自動化すべきなんだけど、
その内側にあるメモリの気持ちを実感として持つには C の範囲で色々やってみるのもいいかな。

839 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 01:18:37.51 ID:bL0j7tMv0.net]
>>812-813
JavaやC#が選択肢になる状況でC++を選択する理由はない。
今C++を何に使うか決まってないのなら、JavaやC#を極める方向に努力した方がいい。

840 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 01:39:01.97 ID:zjlhf9G/0.net]
VisualStudioでMFCのSDIテンプレートを作ると、ドキュメントクラス、ビュークラス、アプリケーションクラス、メインフレームクラスができますが、
これらのポインタを初期化時にグローバル化しておいて、以後あらゆるクラスから気軽にアクセスできるようにしとくのは良くないんでしょうか?
グローバル変数はあまり使うべきではないという考えは置いておくとして、動作上問題は起こるのでしょうか?

841 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 09:54:39.91 ID:1M7A4t/A0.net]
まあたまには口ですることもあるかな…

842 名前:デフォルトの名無しさん mailto:sage [2017/09/30(土) 16:24:19.18 ID:EIEZdyCfd.net]
問題が起こらないように作れば起こらない
としか言えない

843 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 00:09:52.37 ID:A+1idbvt0.net]
MFCのtheAppには100万回ぶち切れてきたけど動作上は特に問題は無い



844 名前:デフォルトの名無しさん [2017/10/01(日) 04:08:21.65 ID:EFR2vscz0.net]
あーこの人、こうやっちゃったんだ(ニヤニヤ
しながら使うもの
ARM C++ベースなんで同情するところもあるけどね

845 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 11:18:29.65 ID:coFT7XLp0.net]
グローバル変数だからといって頭ごなしにぶち切れるのもいかがなものか…
CPU視点でやるべきことに対して処理順序にあいまいさが生じないなら実行上問題無いし、
プログラマーの視点で管理できる個数なら実用上も問題無い
同一クラスの複数インスタンスが欲しければグローバルな配列にしたらやり過ごせる

ていうか仮にtheAppを根とする木構造で全てのデータを管理することを思い立ったとして、
その木の根付近をぶち切って得た2〜3の大枝をグローバル変数を根とするそれぞれ別の木にする、ぐらいの
挿し木設計は設計上のショートカットとして許されるべきや
というのは、プログラムのあらゆる箇所で
 theApp()->getMemberA()->getMemberAA()->getMemberAAA()->...->getMemberZZ()->getValue()
と書かねばならなかったものが、
 g_dataAA->...->getMemberZZ()->getValue()
ぐらいで済む

846 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 12:31:41.44 ID:A+1idbvt0.net]
平気でグローバル変数を使う奴はtheAppの混じったコードを使いまわし続けて大量にデータを持たせるようになる
そして結合しまくりのクラスを他のソフトにコピペしていつのまにか神theAppができある
マルチスレッドで読み書きしてるもんだから予想外のバグが起こる
上司はそれでそれが当たり前だと思ってるから同じようにしろと俺に命令する
俺切れる

847 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 12:47:25.61 ID:coFT7XLp0.net]
>マルチスレッドで読み書きしてるもんだから予想外のバグが起こる
これはグローバル変数でなくとも起きる設計なら起きるから別件
ていうか
>CPU視点でやるべきことに対して処理順序にあいまいさが生じ(>>822)
ているケースにあたる

非同期呼び出しの同期化は呼び出される側のクラスで解決すべき、というだけ
メソッド内で完結できれば最も安全
パホーマンスや処理の粒度の関係でそれが適さない場合は
トランザクション処理をちゃんと設計汁、

848 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 12:50:48.09 ID:+enXMbbO0.net]
>>823
アプリケーションの中で寿命の長いデータはどこにどうやって置いてるの?

849 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 14:12:37.21 ID:A+1idbvt0.net]
>>824
ちょっと足りなかったわ
マルチスレッドでかつ複数のクラスを跨って別々の場所で読み書きされているからいつどこで変更されるかわからないことが多々ある
そうなるとあちらを立てればこちらが立たずといった感じになり、きれいに書く気力が失われてさらに汚さが加速する

>>825
必要なデータだけを引数で与えるべき

850 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 14:15:44.38 ID:P+J8m3XL0.net]
グローバル変数で同期とるんじゃないぞ。そんなもので同期なんて取れないからな。
ちゃんとOSが提供する同期オブジェクト使えよ。

851 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 14:17:42.21 ID:LFbo+6zld.net]
どんな環境でもOSがあってしっかりした同期の仕組みが有るとか思ってるお花畑がいると聞いて

852 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 14:25:15.04 ID:P+J8m3XL0.net]
いやはや無知で申し訳ない。
マルチスレッド機能があって同期の仕組みが提供されない処理系があるならばご教授して頂きたい。

853 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 14:59:48.84 ID:8m985+fI0.net]
文脈上Windowsでの話なのははっきりしてるのに「どんな環境でも」とか



854 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:20:08.45 ID:+enXMbbO0.net]
>>826
>必要なデータだけを引数で与えるべき

引数を渡す側がそのデータをどこにどうやって保持すればいいのか、という問題が残るだけでは?

855 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:35:52.14 ID:7TdPvZgo0.net]
>>831
> 引数を渡す側がそのデータをどこにどうやって保持すればいいのか、という問題が残るだけでは?
再帰的にたどって行けばいいだけかと
プログラムの寿命とほぼ同じ寿命が必要ならmain( )で定義することになるだろうし

856 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:38:17.18 ID:P+J8m3XL0.net]
どうしてもグローバル的なものがほしいなら、グローバルにしてしまえよ。
アクセス用の関数だけしっかり同期処理書けばいい。

857 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:41:47.38 ID:coFT7XLp0.net]
んまーマルチスレッド機能有りのOSであり
 (1) OSがプリエンプトしてくるのを止めるAPIが無い
 (2) ユーザープログラム独自に割り込み禁止命令を実行できない(特権命令違反でトラップされる
としたらユーザー側ではフラグのread modify writeのアトミック性を保証する術がまるきり無くなる

858 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:43:55.69 ID:coFT7XLp0.net]
いやすまん下記も追加
 (3) interlock系の命令が使えない(特権命令違反か何かでトラップされる
(3)は使えるかな普通…
>>829のは杞憂かもしれんな…

859 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:51:28.11 ID:coFT7XLp0.net]
しかしまあ同期処理はOSが提供すべき(理念としてだけでなく、その方が効率よく実現できるから
というのは同意
マルチスレッド機能があるOSなら必ずプリエンプトされないコード範囲を持つので、そこでなら
interlock系の命令を持たないZ-80みたいなCPUでも何も問題なくアトミックなread-modify-writeができる、

860 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:52:05.08 ID:7TdPvZgo0.net]
>>834-835
Compare-And-Swapとかの命令が特権命令になってるプロセッサなんてあるんだっけ?

861 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 15:59:29.84 ID:coFT7XLp0.net]
>>837
Interlock系命令の意味で言った
正しい言葉使いかは知らん…!

862 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 16:05:24.82 ID:a+6SxdIf0.net]
atomicなread及びwriteが使えるならmutexを構成できるし、それを利用すればread modify writeも可能だよ。

863 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 17:15:48.85 ID:zBOS+jx9M.net]
ミューテックスが何だって?
くだらねえ話しやがって・・



864 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 17:18:14.77 ID:A+1idbvt0.net]
>>831
どんどん上にたどっていく
そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい
externした変数はそのクラスが所有権を持っていることと同等なので、パフォーマンス上の都合が無ければ極力共有は避けるべき
あとコードを使いまわすときにも障害になる
ファイルにまとめて他でincludeしてもそのまま使えない

865 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 17:46:49.19 ID:+enXMbbO0.net]
>>841
>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい

クラスが持つっていうのはそのクラスのスタティックメンバにしろという意味?
それでは結局グローバル変数とか無名namespace内変数とあまり変わらないような気がする。

866 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 18:21:24.53 ID:A+1idbvt0.net]
>>842
言ってる意味がわからない
クラスA内クラスBとCを宣言して

B b;
C c;
c.set_data(b);

だとか

main関数内で

Dptr d_ptr = D::get_resource();
Eptr e_ptr = E::get_resource();
F f(d_ptr, e_ptr);
f.excute();

とかこんな風にする

867 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 18:30:22.24 ID:+enXMbbO0.net]
>>843
んー

>そのデータを管理しなければいけないクラスあるいはmain関数が保持すればいい

「あるいは」ってどういう意味?

main関数内に持つ方はわかるんですよ。
そうでなく、「クラスが保持」の方の解説をお願いしたい。ずっと保持し続けるんだから
スタティックメンバなのかな?と思った。

868 名前:817 mailto:sage [2017/10/01(日) 18:34:27.58 ID:SWvA/SVx0.net]
>>820
では、例えば初期化時にtheApp内に、Doc、View、MainFrmクラスのポインタをメンバに持たせておいて、
以降、あらゆるクラスからtheAppを介してアクセスしてもよいということですね。

こういったやり方でふとよぎった不安なんですが、
長時間アプリを起動していたとき、とあるクラスの参照ポインタがいつのまにか変わっていて、
例えばビュークラスを取得しようと「theApp.GetView()」としたときにはすでにそこにViewクラスはいない。。。なんてことは起こりませんか?

869 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:04:09.96 ID:c8q3kohq0.net]
>>845
起こらないように設計する。

870 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:06:45.42 ID:A+1idbvt0.net]
>>844
普通なパブリックなメンバでいいと思うけど
その所有権をもったクラスの寿命が尽きたら同時に開放される


>>845
もちろん参照元からは参照先の実態があることが保障されないのでよくある
特定のメンバの参照数が数百箇所になってたときは手に負えなくなったのでさすがに作り直した

871 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:24:06.85 ID:8m985+fI0.net]
「クラスの寿命」とかもう難しすぎてついていけんわ

872 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:38:58.01 ID:A+1idbvt0.net]
>>848
推敲とかしてないのである程度読み替えて言いたいことを汲み取ってね
そのクラスの変数の寿命な

873 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:42:13.70 ID:+enXMbbO0.net]
うん、寿命の長いオブジェクトをどうやって保持し続けるかっていう話なのにね



874 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:51:59.11 ID:P+J8m3XL0.net]
悩む理由がよく分からないが。適当な管理クラス作ればいいだけでは。

875 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 19:54:30.69 ID:+enXMbbO0.net]
>>849
寿命の長いオブジェクトをどうやって保持し続けるかがテーマなので、
「a というデータはクラスBのオブジェクトbに持たせればいい」では
じゃあそのbはどこにどうやって保持し続けるのかという無限後退に陥る。

普通のグローバル変数やシングルトン
theAppにぶら下げるの
mainの中に置く

一長一短あるのでそれ以外に何かないかなという話

876 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 20:03:44.13 ID:P+J8m3XL0.net]
別に永続化、シリアライズの話までしてないわけでしょ。
mainかグローバルの2択で推奨はmain、どのスコープからも見えてアクセスしたいならグローバルもありで終わりでしょ。

877 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 20:06:34.68 ID:+enXMbbO0.net]
>>853
あなたの意見は>>833以降ずっと一貫しているからいいですよ。

>>823の意見がわかるようでわかりにくい

878 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 20:15:10.00 ID:P+J8m3XL0.net]
MFC? H社のソフトのことかな?

879 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 22:22:01.91 ID:SWvA/SVx0.net]
>>846
>>もちろん参照元からは参照先の実態があることが保障されないのでよくある
ソースコードで意図的にdeleteとか、アドレス移動する命令をいれてなくても起こるんですか?
(ガベージコレクションみたいなことが)

880 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 22:50:35.76 ID:LFbo+6zld.net]
>>829
無知を謝る必要はない

マルチコアのDSPをOSレスで使うとか

881 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 22:54:38.73 ID:LFbo+6zld.net]
>>826
パラメータで渡すべき情報と
そうじゃない情報と
がある

882 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 23:00:12.89 ID:LFbo+6zld.net]
>>852
スタティックメモリ(グローバル変数など)
auto変数(スタックやレジスタなど)
OSやAPI側の保存領域(APIを用いた設定など)
ファイルなど

883 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 23:08:17.57 ID:A+1idbvt0.net]
>>856
起こるわけないが



884 名前:デフォルトの名無しさん mailto:sage [2017/10/01(日) 23:28:49.53 ID:LFbo+6zld.net]
意図的じゃないdelete

885 名前:デフォルトの名無しさん [2017/10/02(月) 15:27:40.28 ID:jSh1mr/v0.net]
> プログラムのあらゆる箇所で
>  theApp()->getMemberA()->getMemberAA()->getMemberAAA()->...->getMemberZZ()->getValue()
> と書かねばならなかった

本当にあらゆる箇所に重複コードを書きまくっているとしたら相当なアフォだな
関数化かキャッシュするだろふつー

886 名前:デフォルトの名無しさん [2017/10/02(月) 17:30:53.86 ID:wJY11lw/0.net]
最近WindowsのほうでVSを入れまして、簡単なSTGを作って遊んでいるのですが、MacOSでもC++でSTGを作ることはできるのでしょうか?
Windowsでは、DxlibといったSTG制作に特化したライブラリがありますが、MacOSではどうなのでしょうか…?実際にMacでSTG制作の経験がある方、挫折した方の話をお聞かせください。よろしくお願いします。

887 名前:デフォルトの名無しさん [2017/10/02(月) 17:45:41.63 ID:M0wavUvt0.net]
DXLibがSTG制作に特化したライブラリ…

888 名前:デフォルトの名無しさん [2017/10/02(月) 18:07:53.55 ID:wJY11lw/0.net]
>>864
何かおかしなことを言っていたらすみません。
STG制作入門のホームページでそのようなことが書かれていたので、そう認識していた次第です。

889 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:07:36.56 ID:SPyFybU20.net]
それはDirectXの薄いラッパなので何に特化しているとかはない
マルチプラットフォームで作りたいならOpenGLで作れ

890 名前:デフォルトの名無しさん [2017/10/02(月) 20:27:58.95 ID:wJY11lw/0.net]
OpenGLか…
難しそうだしまだ取っ付くべきじゃないような気がするんだけどそんなことはない?

891 名前:デフォルトの名無しさん [2017/10/02(月) 20:36:13.43 ID:/AEbHlJU0.net]
Valkan行こう

892 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 22:38:15.66 ID:O4roxos+0.net]
>>845
それぞれアクセス関数が用意されているので馬鹿なことはやめなさい

893 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 00:06:57.08 ID:AOU4wQiN0.net]
>>862
黙れよキチガイ
theApp()はtheAppかthisの間違いだがそれは別にして
メソッドgetMenberA()を有するクラスから始まって、
メソッドgetValue()を有するクラスFooまでの全てのクラス
が完璧にカプセル化された設計の元で
theAppから配下のFooのメンバにアクセスするアクセッサは実質的に>>862な状況を呈する
これはもう完璧なカプセル化を諦めて途中までグローバル変数にする(挿し木設計)か
インライ



894 名前:涛W開による最適化を期待するぐらいしか手が無い []
[ここ壊れてます]

895 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 00:11:53.92 ID:AOU4wQiN0.net]
まあ神の視座に立てば完璧な抽象化を徹底してそんな深いアクセッサをいらなくすれば良いのだが
そんなことが最初からできるなら苦労は無い、

896 名前:デフォルトの名無しさん [2017/10/03(火) 05:23:10.92 ID:ZkSEHHAS0.net]
> カプセル化を諦めて途中までグローバル変数

ヘボ野郎

897 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 15:26:50.04 ID:tYdASm94H.net]
二次元配列の中身を1命令で一気に出力する方法はないでしょうか
いちいち2重ループかくのめんどくさいです

898 名前:デフォルトの名無しさん [2017/10/03(火) 16:01:22.87 ID:ZkSEHHAS0.net]
CならあるがC++では一般的な方法はない

899 名前:デフォルトの名無しさん [2017/10/03(火) 16:16:18.00 ID:vTZ8MAnuM.net]
>>874
Cでの方法を教えていただけると嬉しいです

900 名前:デフォルトの名無しさん [2017/10/03(火) 16:16:57.77 ID:vTZ8MAnuM.net]
すいませんIDかわりました
>>875>>873です

901 名前:デフォルトの名無しさん [2017/10/03(火) 16:20:42.09 ID:ZkSEHHAS0.net]
俺も暇なヤツだなw

template <typename T> void print_dim(T&);

template <typename T, int RANK>
struct print_dim_t
{
void doit(T& x)
{
for(auto& y : x) print_dim(y);
}
};

template <typename T>
struct print_dim_t<T, 1>
{
void doit(T& x)
{
for(auto& y : x) std::cout << y << ',';
}
};

template <typename T>
void print_dim(T& x)
{
print_dim_t<T, std::rank_v<T>> obj;
obj.doit(x);
}

902 名前:デフォルトの名無しさん [2017/10/03(火) 16:34:48.99 ID:ZkSEHHAS0.net]
#define print_dim(array, type) do_print_dim_##type((type *)&array, (type *)(&array + 1))

void do_print_dim_int(int *first, int *last)
{
for(int *p = first; p != last; p++) printf(" %d", *p);
}

903 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 16:54:32.30 ID:hqWXgVBV0.net]
暇じゃないので横着しました
int* it = (int*) mat;
for_each(it, it + ROW * COL, [](int i){cout << i << " ";});



904 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 18:26:58.85 ID:O2xwfga8d.net]
linuxの質問です
・koファイルからコマンドライン実行で実行ファイルを実行したい
どうやって実現するか調べてもわからなくてやり方教えて欲しいです
A --B みたいな呼び出しかたをしたい
・複数スレッドを立てているBプロセスを
全スレッドsleepにすることできる?

905 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 18:34:16.19 ID:O2xwfga8d.net]
>>880
親プロセスをスリープにできるだけでも問題ないです

906 名前:片山博文MZ mailto:sage [2017/10/04(水) 18:45:43.87 ID:HMkkIXOid.net]
system, execl, execlp, execle, execv, execvp, execvpe, spawn, popen, fork

907 名前:片山博文MZ mailto:sage [2017/10/04(水) 18:47:36.46 ID:HMkkIXOid.net]
sleep, usleep, nanosleep

908 名前:片山博文MZ mailto:sage [2017/10/04(水) 19:21:33.45 ID:HMkkIXOid.net]
解説が必要ですか?
はい/いいえ

909 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 19:29:13.24 ID:N0mfbhbs0.net]
>>880 上半分だけ
.ko ってデバイスドライバとかのローダブルモジュールじゃないかな。
動作中のカーネルにinsmodで組み込まなきゃ使えないと思うんだけど。

910 名前:885 mailto:sage [2017/10/04(水) 19:36:09.54 ID:N0mfbhbs0.net]
すまん、質問の意図を取り違えたかも。

カーネルモジュールの中から外部コマンドを呼びたいって話かな。
可能かも知れん、と言うかカーネルがコマンドを実行するのと同じ手順のはずだが、
具体的な方法はさっぱり分からん。役に立たなくて申し訳ない。

911 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 22:05:29.41 ID:O2xwfga8d.net]
>>884
とても欲しいです..

912 名前:.

>>886
カーネルオブジェクトから外部コマンド(実行ファイル)をコマンド形式で呼び出したいって意味ですね
[]
[ここ壊れてます]

913 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 22:07:13.92 ID:UdMKuk5G0.net]
ハッカーですね。



914 名前:片山博文MZ mailto:sage [2017/10/04(水) 22:16:13.63 ID:HMkkIXOid.net]
>>882に書かれている関数のそれぞれの機能を比較し、該当する関数のソース(in Linux kernel)を読んでみては?

915 名前:デフォルトの名無しさん mailto:sage [2017/10/04(水) 22:19:51.52 ID:O2xwfga8d.net]
>>889
今解説読んでいてsleep関連が終わったとこ
exec関連多すぎて大変

916 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 07:00:51.51 ID:AZey7Nzq0.net]
>>880
ちょいと検索したところ call_usermodehelper て関数があるみたい。

917 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 21:41:51.13 ID:/Agpj2+3d.net]
>>891
今調べたら出てきました!
自分が望んだことできそうですありがとうございます

918 名前:デフォルトの名無しさん [2017/10/06(金) 09:41:37.58 ID:aNGBh62I0.net]
("a,b,c")とは、a,b,cの合計を表すのでしょうか?
それとも、a,b,c各それぞれを表すのでしょうか?

919 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 10:15:40.40 ID:tNPv5Oyi0.net]
ここの住人はソースコードをコメントで装飾するのに、どういう書き方をしていますか?
参考にさせて下さい

920 名前:デフォルトの名無しさん [2017/10/06(金) 10:26:06.63 ID:8EN3J+m8d.net]
doxygen方式

921 名前:片山博文MZ mailto:sage [2017/10/06(金) 11:28:24.20 ID:u49AV52wd.net]
>>893
ただのC文字列。

922 名前:893 mailto:sage [2017/10/06(金) 14:25:11.99 ID:aNGBh62I0.net]
>>896
ありがとうございました。

923 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 19:52:03.20 ID:sTEh17J80.net]
C++リテラル文字列だろ



924 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 19:54:12.06 ID:sTEh17J80.net]
いや、やっぱただの文字列か

925 名前:デフォルトの名無しさん [2017/10/06(金) 21:08:44.42 ID:vfMxTM1h0.net]
→ の意味教えて下さい。

926 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 21:15:27.43 ID:fyJ+AUec0.net]
そんなものありません。

927 名前:片山博文MZ mailto:sage [2017/10/06(金) 21:46:37.43 ID:u49AV52wd.net]
「ptr->member」は、「(*ptr).member」と同じ意味。

928 名前:900 mailto:sage [2017/10/06(金) 23:48:23.51 ID:vfMxTM1h0.net]
参考書の一部です
fast-uploader.com/file/7062856811993/

どう言う意味なのでしょうか?

929 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 23:52:15.96 ID:vfMxTM1h0.net]
本を読んでも
 structやunionが具体的に、どの様に動作してるのか分かりません。

930 名前:デフォルトの名無しさん mailto:sage [2017/10/06(金) 23:58:13.70 ID:yrQN1jb/0.net]
基本の基本なので、
先ずは、小さなサンプル作って、実際に動かしてデバッガで追ってみる。
その上で、判らない事を質問すべき。

931 名前:デフォルトの名無しさん [2017/10/07(土) 01:41:08.30 ID:6wfQSWva0.net]
質問です
以下のコードがコンパイルに通りません
class Structure { public: std::string type; };
std::vector< std::unique_ptr<void> > data;

std::unique_ptr<void> structure(new Structure);
structure->type = "HogeHoge";
data.push_back(structure);

>g++ -Wall -std=c++11 -c hogehoge.cpp
>error: ‘std::unique_ptr<void>::pointer {aka void*}’ is not a pointer-to-object type
> structure->type = "HogeHoge";
> ^
std::unique_ptr<void>ではなくて、
std::unique<Structure>にするとコンパイル通りました
voidだとだめなんでしょうか エラーになる理由を教えて下さい

932 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 01:49:12.44 ID:IjrnmnS30.net]
>>906
anyつかえ。

933 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 05:28:19.29 ID:9j2tI+ab0.net]
>>900
こりゃ -> の誤植だな。
印刷屋さんがC知らなくて矢印記号と思ったんだな。
コード部分は執筆者が念を入れてチェックしなきゃね。



934 名前:デフォルトの名無しさん [2017/10/07(土) 08:30:30.38 ID:r58+Koxz0.net]
>>906
エラーメッセージに書いてあるだろ <

935 名前:br> structure->type = "HogeHoge"; の代入先がオブジェクトじゃねえぜと
おまえさんはvoid = char const*;をやろうとしたんだよ
[]
[ここ壊れてます]

936 名前:デフォルトの名無しさん [2017/10/07(土) 08:31:55.56 ID:r58+Koxz0.net]
あ、すまんちょいミスった
指摘できるやついる?解説頼むわ

937 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:41:11.20 ID:eyY86HOM0.net]
>>906
unique_ptrあんまりしらんから想像で書くけど
そいつがデストラクタまで管理したいからvoidじゃなくてちゃんと型渡せってことじゃね

938 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 09:00:22.02 ID:y2Dkbadu0.net]
>>906
> エラーになる理由を教えて下さい
void 型の変数なんてないから
そもそも何をしたいんだよ...

939 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 09:03:55.62 ID:7nonADk70.net]
unique_ptr<void>という型なので、
中にtypeというメンバーがあることがコンパイラからはわからない。

static_cast<Structure*>(structure.get())->type = "HogeHoge";
のように明示すればコンパイルだけは通るかと思ったんだが、
こっちだと>>911の問題に引っかかって、その前の行でエラーになる。

940 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 09:27:45.88 ID:7nonADk70.net]
>>913の最後の行は勘違いだった。
こちらの環境だと、unique_ptr<void>の時点でエラーになる。

941 名前: mailto:sage [2017/10/07(土) 11:35:23.13 ID:NngrEkye0.net]
unique_ptr<void *> だとどうなる?

942 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 11:58:47.95 ID:rHfSD+zL0.net]
>>913
delete できないからね
voidを渡すんならカスタムデリータもセットにしなきゃならない。

template <typename T>
struct vp_deleter {
void operator ()(void *p)const
{
delete static_cast<T*>(p);
}
};

std::unique_ptr<void, vp_deleter<int>> a(new int(8));

なら通った。

943 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:19:56.83 ID:jvf7kHO4M.net]
void型なんて定義もなければサイズもないから
素で使うがそもそもNG



944 名前:デフォルトの名無しさん [2017/10/07(土) 12:36:08.56 ID:6wfQSWva0.net]
>>907
anyは知りませんでした
stdじゃなくてboostにあるんですね つかってみます
>>909
つまり void*->type は void.type になるってことですね
voidポインタは使ったことなくて、あれから調べたのですが
アクセスする前にキャストが必要だと知りました・・
無知ゆえの初歩的なミスです 指摘ありがとうございます
>>911, >>913, >>916
スマートポインタなのでデストラクタを呼び出せるようにしないといけないんですね
カスタムデリータは知りませんでした コード参考になります

void型なのはStructureの他にもプリミティブ型とかも入れたかったからです
boost::any使うやり方とカスタムデリータ渡すやり方両方やってみます
皆さんレスありがとうございました

945 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 13:41:40.48 ID:j+yonEy7d.net]
ひとつのカスタムデリータでいろんな型をdeleteするってなら無理

946 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 14:16:25.95 ID:LB5EP+Z/0.net]
いまだにforkとthreadの動作の違いがわからない

947 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 14:17:50.50 ID:jvf7kHO4M.net]
ある配列がありそれを指定した順番で並び替えしたい

std::vector< any_struct_t > array; //これを並び替えたい
std::vector< unsigned int > index_list = { 3,8,6,0,2...}; //この順番にしたい

探しているんだけど適当なライブラリが見つからない
標準ライブラリに入ってたりする?
またはアルゴリズムが知りたい
出来ればswap回数が少ない方法が知りたい

948 名前:デフォルトの名無しさん [2017/10/07(土) 15:34:33.81 ID:cqowZFEsp.net]
配列もう一個用意してその添え字に移動するんじゃだめなん

949 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:00:10.47 ID:ZvmF6v7F0.net]
>>922
それが一番速そうだよね

950 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:14:50.00 ID:Mcd7mBScM.net]
std::vector<any_struct_t> ret(index_list);
std::transform(index_list.cbegin(), index_list.cend(), ret.begin(), [&array](auto i){ return array[i]; });

951 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:25:34.07 ID:jvf7kHO4M.net]
>>924
それタイプミスあります?
でももう一つ配列を用意してコピーする点では
他の方と一緒ですね

別配列を用意せず全てswapで済ます方法も作ってみましたが
これにはindex_listが更に2本必要になり
効率は別配列と変わらないと予想される結果でした

参考になりました
ありがとうございました

952 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:38:58.22 ID:Mcd7mBScM.net]
一行目初期化はsizeだった
すまん

953 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 16:55:14.57 ID:rHfSD+zL0.net]
>>925
別領域を全く使わずin-placeでかつ汎用性のあるやり方ってすごく難しそう。
でも不可能性の証明も難しそうなんだよな。



954 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:23:03.40 ID:9j2tI+ab0.net]
index_list に含まれる値がそれぞれ重複なく1回だけ出現とか、
いかにも破られそうな条件を暗黙に期待するライブラリ、
てのも変な感じだしねぇ。

955 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:39:38.90 ID:7nonADk70.net]
任意の置換は互換の積で表せるので、swap繰り返せばin-placeで可能。
rikei-index.blue.coocan.jp/senkei/teigi4senkei.html

956 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 17:47:14.55 ID:IjrnmnS30.net]
>>906
https://ideone.com/j7lHlZ
こういうことでしょ?

957 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 18:00:13.73 ID:rHfSD+zL0.net]
>>929
まだやってない場所どこだっけ?

958 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 18:14:41.26 ID:7nonADk70.net]
>>927
「別領域を全く使わず」を見落としてたすまぬ

959 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 18:35:30.53 ID:rHfSD+zL0.net]
「別領域を全く使わず」とはいっても、テンポラリの変数を1個とか2個の固定数だけ使うのは除く。

960 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:11:01.43 ID:7nonADk70.net]
屁理屈を言うと、index_listを壊していいなら、
以下の手順で別領域を使わない置換は可能。遅いけど。
for( size_t i = 0; i < array.size() - 1; ++i )
{
std::swap( array[i], array[index_list[i]] );
std::swap( index_list[i], *std::find( index_list.begin()+i+1, index_list.end(), i ) );
}

961 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:26:56.50 ID:7nonADk70.net]
おっと、index_list.begin()+i+1の「+1」は消してくれ

962 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 19:44:23.58 ID:rHfSD+zL0.net]
この話をきっかけに、std::next_permutation の仕様を見てみたが、どういう時に使うのかよくわからない。

963 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 20:14:16.81 ID:jvf7kHO4M.net]
流石にO(n)は維持しないと
厳しいと思います



964 名前:片山博文MZ mailto:sage [2017/10/07(土) 20:23:01.47 ID:vDiuGwTad.net]
お前ら、プログラム書くとき、普通にnoexceptを何回も書いてるの?

965 名前:片山博文MZ mailto:sage [2017/10/07(土) 20:25:42.72 ID:vDiuGwTad.net]
>>936
permutation を実装するときに決まってんだろ?

966 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 20:53:48.18 ID:Mcd7mBScM.net]
>>938
今までthrow()と書いてた場所には書いてるよ
むしろ、書いてないの?

967 名前:片山博文MZ mailto:sage [2017/10/07(土) 21:02:34.40 ID:vDiuGwTad.net]
>>940
コンパイラーのバカ。

968 名前:はちみつ餃子 mailto:sage [2017/10/07(土) 21:05:19.53 ID:JUuMz14c0.net]
>>918
any は C++17 で標準に入ったよ。

969 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 21:13:10.52 ID:x4ka+ayCr.net]
規格と規格じゃないものの区別も付かない低能はすっこんでて

970 名前:900 mailto:sage [2017/10/07(土) 21:13:19.89 ID:m/msdGTM0.net]
>>908
ありがとうございます。

いくら検索しても出て来ないので、困ってました。

971 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 21:17:07.24 ID:rHfSD+zL0.net]
>>939
わからんがな

972 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 23:13:09.50 ID:7nonADk70.net]
>>934
別領域を使わない置換に再挑戦。今回はO(n)のはず。
for( size_t i = 0; i < array.size() - 1; ++i )
{
size_t j = i, k = index_list[i];
while( k != i )
{
std::swap( array[j], array[k] );
index_list[j] = j; j = k; k = index_list[k];
}
index_list[j] = j;
}

973 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:16:09.42 ID:FGX6bPrh0.net]
>>9



974 名前:46
二重ループなのにO(n)なの?
[]
[ここ壊れてます]

975 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 00:28:37.42 ID:wi1g/BWB0.net]
後出しのようで心苦しいけどindex_listを壊すのはダメだと思う。
const参照で渡すインタフェースにできないという意味で汎用性条件を満たしていない。

976 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 06:22:19.14 ID:+SudLjvR0.net]
>>947
以下の2つの理由により、外側のループがn回まわる間に
内側のループの中身はたかだかn回しか実行されない。
1. 内側のループ内で処理済みのインデックスjに対し index_list[j]=j が実行される。
2. index_list[i]==i の条件が最初から満たされていた場合、内側のループは実行されない
要するに、内側のループを実行済みかのフラグとしてindex_listを使ってるだけ。
>>948
index_listを壊している時点で屁理屈なのは自覚しているんで、仕方ない。
一応、別配列にムーブする場合と比べると、
最初から正しい位置にある要素への処理が不要になるというメリットは有る。

977 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:20:44.83 ID:HosRocIl0.net]
>>928, >>948
ライブラリに対するオレオレ定義をいちいち開陳しなくていいよ、チラ裏にでも書いとけ

978 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 11:34:33.36 ID:+SudLjvR0.net]
駄目な理由が引数を壊すってことだけなら、引数を値渡しにしてやれば、
呼び出し時に勝手にコピーされるので問題ないはず。
壊していい引数を渡す時はstd::move()すればいいし。

979 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 13:39:35.60 ID:GUxnbDfL0.net]
引数がconst参照=引数の状態を変更しない(てか、できない)という意思表示
に対して
引数が右辺値参照=引数の状態を変更する(しても文句言うな)という意思表示
というのはアリ?

右辺値参照に対する理解が曖昧なんで漠然とよく分からない(何が分かって
ないかも分からないw)んだが、もっと別な意思表示方法もある?

980 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 16:07:31.29 ID:6tf5QjxV0.net]
ほ〜ん>>946の奴はちゃんと動いたわ;
ttps://ideone.com/6lwMOn

981 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 16:11:39.00 ID:6tf5QjxV0.net]
>>946の奴は要素[i]が内側のwhile()ループからは1回以上アクセスされないから確かにO(N)な気配、

982 名前:デフォルトの名無しさん mailto:sage [2017/10/08(日) 23:25:19.93 ID:sIfqyVAH0.net]
右辺値参照はさっぱり意味わからんわ。

983 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:00:03.09 ID:U0LcPFS10.net]
右辺値参照というのは、関数f()へのT型データの値渡し時に暗黙のうちに行われる(C++03までは無条件に行われていた)
 (左辺値) = (右辺値)
という代入処理において、
当該代入処理後、右辺値が関数呼び出し元によって使われなくなることが明白なとき、
 左辺値へのコピー後、右辺値をデストラクトする
という処理に暗黙のうちになっていたものを、
 右辺値から左辺値への移動
と「も」書けるようにするためのしくみ

Tに効率の良いムーブコンストラクタ(か右辺値参照を引数とする代入演算子)を定義しないとメリットが生じない
ポインタに__restrictを付けるべきかどうか悩まねばならないレベルの人用
C++03でもコンストラ・デストラ呼び出し回数削減の最適化がかかって同じような効果になるケースが多々あるから
そういうのが信用できない神経質な人向け

※ 個人の感想です



984 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:09:56.49 ID:Ge9OzZ/lr.net]
それで>>952の質問の答えはどうなるんだ?

985 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:20:15.73 ID:U0LcPFS10.net]
>>957
右辺値参照には一時オブジェクトしか代入できない縛りがあるから_
関数fooを
 voiid foo(int&& x)
というバージョンしか定義していないとすると、
 int g_x = 10;
 foo(g_x);
がビルドが通らないのではないか;
一般的な使用を想定すれば、結局foo(const int& x)も定義必要

C++03までしか使ったこと無いから知らんけど;;

986 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 09:37:56.10 ID:nhJ4ZLVgM.net]
>>958
その場合はfoo(int(g_x));が通るから、必須ではないよ
コピーを外側で明示的にやらせることで、こっちのほうが責任が明確になるので好きという人もいる

987 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 10:15:14.60 ID:53KUOYPr0.net]
必然性の無い実装都合のシンクはクソ

988 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:26:43.28 ID:bLguG3ky0.net]
オブジェクトのコピーとかムーブのためにここまで言語仕様を複雑にしないといけないのか。おれにはさっぱり理解不能だわ。

989 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 17:57:29.04 ID:0USm99MRM.net]
俺も右辺値参照はどうかと思う
いらないよね

990 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:35:18.07 ID:3udUYydoM.net]
使わなくてもいいんじゃないか?
使ったことないから複雑に感じるだけで、そこまで複雑でもないよ

991 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:45:40.84 ID:UEIAYP2F0.net]
>>961
GCをもたない言語の宿命だから嫌なら性能を犠牲にするかGCを持つ言語を使えばいい

992 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:56:48.86 ID:QjIlXwNcM.net]
いやいやスマポがあるじゃない。
中級が多いプロジェクトならスマポ強制のほうが性能上がるんじゃないかと思う。

993 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 18:58:40.39 ID:8DJAJvC20.net]
個人的にはC++の言語仕様の暗黒面はほとんど「参照」が絡んでいると思う。



994 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 19:50:58.39 ID:3udUYydoM.net]
ADLとか部分特殊化のマッチとかのほうが、はるかに複雑で暗黒だと思う

995 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 20:54:40.71 ID:bLguG3ky0.net]
>>964
理解してないのでなにを指摘してるかさっぱり分からないが、
つまり、気取ってC++でGCっぽいことしようとして破綻してるわけだな。

996 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 20:56:32.03 ID:UEIAYP2F0.net]
>>968
> 理解してないのでなにを指摘してるかさっぱり分からないが、
わからないなら絡んでくるなよ...

> つまり、気取ってC++でGCっぽいことしようとして破綻してるわけだな。
全然違うし

997 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 20:56:47.16 ID:1ynB1O3m0.net]
>>967
そう思う。
そのへんは「ルール」でしかないけど、右辺値参照はそれ自体が左辺値参照とは違うひとつの概念だから理解可能

998 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:28:57.78 ID:iWLkHfj90.net]
右辺値参照なんか、破壊不可オブジェクトをムーブするときくらいしか使わないような。うにーくぽいんたとか。
それ以外は参照でいいし。

999 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:45:04.70 ID:Rk3/uNWr0.net]
右辺値参照の有用性を理解できない人間にとってはそもそもC++自体が無用だと思う
さっさと退散しなさい

1000 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:56:43.96 ID:bLguG3ky0.net]
ところでなんでそんなに一時オブジエクトを参照しなきゃいけないコードを書くの?
参照元を管理するのが面倒だから? そういう人は初めからGC言語使えばよくね? ということですか?

1001 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:03:17.69 ID:Rk3/uNWr0.net]
なんでとか言われても。。。
壊してもいい一時オブジェクトの場合、特別に効率的な扱いをしたくなるケースなんて山ほどある
それが分からないならC++なんて触らずにGC言語専門でやってればいいと思うよ

1002 名前:はちみつ餃子 mailto:sage [2017/10/09(月) 22:10:35.64 ID:GeS0S50a0.net]
そのあたりはトレードオフなんだよ。
そりゃあ気にせずに済むなら気にしたくないが、気にしなきゃならないときに出来ることがないのはつらいって話で。

1003 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:13:59.60 ID:0USm99MRM.net]
俺もわからん
左辺値参照ではなく右辺値参照を使った方が
良い状況ってどんなの?
あと唐突にガページコレクション出してるけど
何の関係があるの?



1004 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:24:17.86 ID:bLguG3ky0.net]
もしかしてC++で仕事したことないんですか?

1005 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:25:07.16 ID:1ynB1O3m0.net]
そりゃ右辺値を束縛したくてかつconst

1006 名前:左辺値じゃダメな場合だろ []
[ここ壊れてます]

1007 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:43:46.89 ID:0USm99MRM.net]
んー?
結局無いんでしょ?
使うべきシチュが
そうならそう言えばいいのに

1008 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:45:47.51 ID:jvobj8TT0.net]
>>979
classの初期化はどう?

1009 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:51:16.17 ID:UEIAYP2F0.net]
使うシチュエーションがない?
規格決める奴等が無駄にあーだこーだ言ってるだけとか思ってるなら病院に行った方がいいと思う

1010 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:54:00.89 ID:0USm99MRM.net]
初期化はどう?って言われても・・
右辺値参照で初期化するのがベターな状況は
浮かびませんけど

1011 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 22:55:12.55 ID:0USm99MRM.net]
>>981
と言いつつも
思い浮かばないんでしょ?
じゃあ君もワイと一緒ですね

1012 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:09:59.39 ID:1ynB1O3m0.net]
んん?
右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)
けどconst左辺値じゃダメ(中身を変更したいから)
 ↑
これのどこにわかりにくい点があるというのか?
「RVOが保証されるようになったらいらない」という意見なら理解できるが・・・

1013 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:14:06.35 ID:1ynB1O3m0.net]
たとえば swap の実装なんか(素朴には)moveを3回繰り返すんだから
右辺値参照の有用性は明らかだろ



1014 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:16:20.29 ID:7RyTvmhPr.net]
>>973「なんでそんなに一時オブジエクトを参照しなきゃいけないコードを書くの?」
 ↓
>>984「右辺値を束縛したい(一時オブジェクトだから左辺値としての実体はない)けどconst左辺値じゃダメ」
 「これのどこにわかりにくい点があるというのか?」

これがアスペというやつか

1015 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:20:00.09 ID:1ynB1O3m0.net]
>>986

は?
>>979に言ってるんだよ

1016 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:25:56.07 ID:0USm99MRM.net]
>>985
これを右辺値参照Verに書き換えて
利点を示してもらえますか?

void swap(int& a,int& b)
{
int c = a;
a = b;
b = c;
}

void main()
{
int a = 1;
int b = 2;
swap(a,b);
}

1017 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:26:35.20 ID:1ynB1O3m0.net]
>>986
そっちこそ唐突に>>793>>984を唐突に矢印で結び付けてるけど大丈夫か?
お前の脳内の連想なんて誰にもわからないぞ

1018 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:27:28.76 ID:1ynB1O3m0.net]
>>988
利点はない
intだもの

1019 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:31:15.79 ID:0USm99MRM.net]
なら何なら利点があるの?
long long型ならあるの?
もう訳が分からないよ

1020 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:32:58.04 ID:1ynB1O3m0.net]
>>991
コピーコストの大きいコンテナだったら三回も代入したくないだろ?

1021 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:34:48.01 ID:jvobj8TT0.net]
>>982
もう使わないなら右辺値参照版のコンストラクタに渡したほうがいいじゃん
そしたら、コピーが起きなくて済むでしょ?

1022 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:41:18.28 ID:U0LcPFS10.net]
>>986
右辺値を束縛したい文脈ではかわりにconst左辺値で常におkなのでは…(ていうかconstはあってもなくても良い

>>985
T型データのswapは素朴にはT型データのコピー3回+破棄2回ぐらいが生じる
のでわ…

1023 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:48:51.82 ID:bLguG3ky0.net]
swapが頻繁に起こるような用途なら、なんではじめからポインタで管理しないんですか?



1024 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:49:46.71 ID:qIHa8iWG0.net]
一時オブジェクトもglvalueなんだから
T &に束縛できればよかった

1025 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:52:41.96 ID:jvobj8TT0.net]
>>995
ヒープじゃなくてスタックで処理したいから

1026 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:55:42.49 ID:0USm99MRM.net]
結局のところ
右辺値参照はコピーコストを削減出来るのが利点で
それぐらいしか使い道がないってことか

かつ、コピーコンストラクタよりムーブコンストラクタの方が
コストを軽く出来るクラスに限られると

struct a{ void* p; }; // これには効果が期待出来るが
struct b{ int p[65536]; }; // これには効果は期待出来ない

結論としては、やっぱいらねーやこんなのってことだな

1027 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 23:58:36.68 ID:jvobj8TT0.net]
後者も効果が期待できるよ
そして、コピーコストが削減できるだけってのは正しいが、いるかいらないかは人による

1028 名前:デフォルトの名無しさん mailto:sage [2017/10/10(火) 00:01:39.19 ID:O5j+wjNW0.net]
>>998

> struct b{ int p[65536]; }; // これには効果は期待出来ない

それはあんたがそんな構造をよく使うんなら正しい
よかったじゃないか、結論が出てw

1029 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 72日 12時間 33分 11秒

1030 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef