次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part130
http://mevius.2ch.net/test/read.cgi/tech/1490917669/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part131 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 3b96-ov1m)
2017/07/29(土) 11:28:28.97ID:o30VDF4g0694デフォルトの名無しさん (オッペケ Sr4d-sxPP)
2017/09/14(木) 17:39:29.28ID:7On5vAcFr695デフォルトの名無しさん (ワッチョイ ab1c-/PGn)
2017/09/14(木) 22:59:53.42ID:AfykdPhZ0 いい流れだ
696デフォルトの名無しさん (ワッチョイ c1a6-PzL5)
2017/09/15(金) 15:29:03.53ID:zUPCfesd0 "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::を省略する方法ってあるでしょうか?
class Clacla {
void func1();
void func2();
void func3();
};
"clacla.cpp" //実装部
クラスClacla くくり { <-ここ
void func1() { printf( "1" ); }
void func2() { printf( "2" ); }
void func3() { printf( "3" ); }
};
のように関数の実装時にClacla::を省略する方法ってあるでしょうか?
697はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1315-SGtB)
2017/09/15(金) 15:33:45.29ID:leF15WXE0 >>694
最適化が有効なら C++17 であろうがなかろうが clang なら RVO が効くはずだけど、 u.p の値は null になっちゃうな。
RVO がどうこうじゃなくて this の挙動に関するなんか変なルールが適用されてるとかかも?
最適化が有効なら C++17 であろうがなかろうが clang なら RVO が効くはずだけど、 u.p の値は null になっちゃうな。
RVO がどうこうじゃなくて this の挙動に関するなんか変なルールが適用されてるとかかも?
698片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-dc9P)
2017/09/15(金) 16:07:51.71ID:RQr5TBB1d >>696
クラス内部にインライン関数を埋め込む方法しかない。
クラス内部にインライン関数を埋め込む方法しかない。
699696 (ワッチョイ c1a6-PzL5)
2017/09/15(金) 16:35:44.21ID:zUPCfesd0 >698
やっぱり無いですよね。
ありがとう。
やっぱり無いですよね。
ありがとう。
700デフォルトの名無しさん (オッペケ Sr4d-sxPP)
2017/09/15(金) 21:02:35.06ID:86K7wrSvr >>697
いやだからISO/IEC DIS 14882:2017 15.2/p3の規定により常にRVOが働くわけではないのではないかと申しているのですよ
ついでにu.pがnullptrになることはない
いやだからISO/IEC DIS 14882:2017 15.2/p3の規定により常にRVOが働くわけではないのではないかと申しているのですよ
ついでにu.pがnullptrになることはない
701デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
2017/09/15(金) 21:24:40.19ID:xDlOGQNS0 実にC++相談室らしい流れ
702デフォルトの名無しさん (ワッチョイ 59e4-HfMd)
2017/09/15(金) 21:27:27.94ID:5X/IRSU20 右辺値参照の暗黙適用は例外の処理で不都合があるよね
元の値をTmpにコピっといて例外発生で書き戻すにしても
関数A処理内で呼び出した関数Bからの例外をAのユーザコードでは完スルーなのに
コンパイラコードではコッソリ捕まえて書き戻す必要が有る
そんときロックでも掛かってたらどーすんのよと
呼び出し繋がりを横断的に管理要するとんでもないコスト増なんじゃね?
元の値をTmpにコピっといて例外発生で書き戻すにしても
関数A処理内で呼び出した関数Bからの例外をAのユーザコードでは完スルーなのに
コンパイラコードではコッソリ捕まえて書き戻す必要が有る
そんときロックでも掛かってたらどーすんのよと
呼び出し繋がりを横断的に管理要するとんでもないコスト増なんじゃね?
703デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
2017/09/15(金) 21:36:23.16ID:xDlOGQNS0 Tmpのアドレスを関数B(およびその先の関数)が知る可能性がコンパイラから見て排除できない限り
関数Aから関数Bを呼び出す前にTmpは元の値の完コピーにならざるおえないのでは…
(そうでなければ副作用のある関数を安全にコンパイルできない&安心して書けない
さらにロックに入るときと出るときは上と同じ理由で結果的に完コピーになる上に、
まともなOSならメモリバリアまで手当てしてくれるんじゃ…
関数Aから関数Bを呼び出す前にTmpは元の値の完コピーにならざるおえないのでは…
(そうでなければ副作用のある関数を安全にコンパイルできない&安心して書けない
さらにロックに入るときと出るときは上と同じ理由で結果的に完コピーになる上に、
まともなOSならメモリバリアまで手当てしてくれるんじゃ…
704デフォルトの名無しさん (ワッチョイ 93c5-+NpA)
2017/09/15(金) 21:42:30.18ID:xDlOGQNS0 つまり右辺値参照の暗黙適用が効力を持つのはスゲー広範にインライン展開されるような場合
(当然いかなるOSのAPIやシステムコール類の呼び出しも含まない
「だけ」
であって、通常のプログラマーにはあんまありがたみがはっきりしない仕様
※ 個人の感想です
(当然いかなるOSのAPIやシステムコール類の呼び出しも含まない
「だけ」
であって、通常のプログラマーにはあんまありがたみがはっきりしない仕様
※ 個人の感想です
705デフォルトの名無しさん (スッップ Sdb3-+ReX)
2017/09/15(金) 22:02:45.85ID:1aOT1P+6d コンパイラに頼らないで、素直にパラメーターの参照にしよう
706はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1315-SGtB)
2017/09/15(金) 22:04:08.03ID:leF15WXE0707デフォルトの名無しさん (ワッチョイ 59e4-HfMd)
2017/09/15(金) 22:08:16.65ID:5X/IRSU20 いや noexcept 付きを呼ぶ場合も有難味あると思うよ
C++は const祭りに noexcept祭り追加でござる
特殊化も爆発
C++は const祭りに noexcept祭り追加でござる
特殊化も爆発
708デフォルトの名無しさん (オッペケ Sr4d-sxPP)
2017/09/15(金) 22:34:11.14ID:1joZngjnr709デフォルトの名無しさん (ワッチョイ 5ba6-sxPP)
2017/09/16(土) 11:22:55.52ID:u7cVvkyR0 forward祭り
710デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 10:24:11.11ID:lVEmBRA9d tcp/ipの勉強のためにC++で何か作れば勉強になるかな?って思ってるのだけど
こういうものを作れば勉強になるよってものある??
パケットの動きだったり階層の考え方だったりを学びたい
こういうものを作れば勉強になるよってものある??
パケットの動きだったり階層の考え方だったりを学びたい
711デフォルトの名無しさん (ドコグロ MM9d-BsvU)
2017/09/18(月) 10:40:29.87ID:U79GLBVsM >>710
TCP/IPの勉強ならWireSharkの使い方覚えた方が早いかも
その上のプロトコルレベルなら勉強したいプロトコルの簡単なクライアントから始めればいいと思う
ちなみに俺はNetNewsに流れるむふふ画像を取り込みたかったのでnntpのクライアントをperlで組んで勉強した
TCP/IPの勉強ならWireSharkの使い方覚えた方が早いかも
その上のプロトコルレベルなら勉強したいプロトコルの簡単なクライアントから始めればいいと思う
ちなみに俺はNetNewsに流れるむふふ画像を取り込みたかったのでnntpのクライアントをperlで組んで勉強した
712デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 11:05:46.29ID:lVEmBRA9d >>711
プロトコルレベルの勉強をしたい
そうなるとhttpサーバを立てることになるのかな?
そういう場合は簡単なhttpサーバとクライアントを作成すれば良いのかね?
それで通信しあってwiresharkで中身を見てtcpだったりhttpだったりを見るべき?
プロトコルレベルの勉強をしたい
そうなるとhttpサーバを立てることになるのかな?
そういう場合は簡単なhttpサーバとクライアントを作成すれば良いのかね?
それで通信しあってwiresharkで中身を見てtcpだったりhttpだったりを見るべき?
713デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
2017/09/18(月) 11:39:07.40ID:9mrqYCJU0 おれは一昔前、深夜ボリュームでかくする姉貴のPCが煩くてTCP通信でマスターボリューム弄るサーバー&クライアント作ってコッソリ仕込んでコントロールしてたな。
まぁ、やってやるぞというモチベーションは大事だとおもうよ。
ガンバってね。
まぁ、やってやるぞというモチベーションは大事だとおもうよ。
ガンバってね。
714デフォルトの名無しさん (オッペケ Sr4d-2/pv)
2017/09/18(月) 11:41:39.15ID:qrTqFTlir >>713
それ仕込んでるとき超ワクワクしそう
それ仕込んでるとき超ワクワクしそう
715デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 11:43:19.16ID:lVEmBRA9d >>713
姉貴のパソコンにサーバプログラム常駐させる
そいつがポートXXXで待ち構える
同じ家なのでネットワーク帯は同じで
自分のpcからポートXXXにメッセージ送信する
姉貴のサーバプログラムが受け取ってボリューム下げる処理をする
こんなことしてたってことかね?
姉貴のパソコンにサーバプログラム常駐させる
そいつがポートXXXで待ち構える
同じ家なのでネットワーク帯は同じで
自分のpcからポートXXXにメッセージ送信する
姉貴のサーバプログラムが受け取ってボリューム下げる処理をする
こんなことしてたってことかね?
716デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
2017/09/18(月) 12:01:08.52ID:9mrqYCJU0 >>715
まぁ大体そんな感じなんだが、急に音量小さくすると即効でばれるので、まず、姉貴PCの音量を取得するのが第一だな。
そこからスライダーでボリューム下げていった値をサーバーに順次送信しサーバープログラムがその値に応じて音量を徐々にフェードコントロールするといった具合だな。
まぁ大体そんな感じなんだが、急に音量小さくすると即効でばれるので、まず、姉貴PCの音量を取得するのが第一だな。
そこからスライダーでボリューム下げていった値をサーバーに順次送信しサーバープログラムがその値に応じて音量を徐々にフェードコントロールするといった具合だな。
717デフォルトの名無しさん (オッペケ Sr4d-sxPP)
2017/09/18(月) 12:08:20.13ID:nt0hX0ohr718デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 12:10:35.92ID:lVEmBRA9d719デフォルトの名無しさん (ワッチョイ 939f-0QkJ)
2017/09/18(月) 12:15:30.74ID:9mrqYCJU0720デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 12:57:21.32ID:lVEmBRA9d >>719
相互にsend recvしてるだけってことかな
相互にsend recvしてるだけってことかな
721デフォルトの名無しさん (ドコグロ MM9d-BsvU)
2017/09/18(月) 13:48:18.24ID:U79GLBVsM >>712
サーバーよりクライアントの方が簡単だからサーバーは適当な奴持ってきて簡単なクライアントを作るところから始めればいいと思う
サーバーよりクライアントの方が簡単だからサーバーは適当な奴持ってきて簡単なクライアントを作るところから始めればいいと思う
722デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 14:27:41.23ID:lVEmBRA9d723デフォルトの名無しさん (ワッチョイ 9311-BsvU)
2017/09/18(月) 15:08:42.19ID:eqWC6Q8G0724デフォルトの名無しさん (ワッチョイ 93f0-o7xi)
2017/09/18(月) 17:35:56.07ID:UWkHQHZA0 そもそも、TCP/IPの練習にC++は妥当なのか?
725デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 17:55:46.62ID:lVEmBRA9d726デフォルトの名無しさん (ワッチョイ 8109-VUiJ)
2017/09/18(月) 18:29:11.61ID:Of28e9o20 ネットワークライブラリは現在策定中だっけ。
727デフォルトの名無しさん (ワッチョイ 2be3-SGtB)
2017/09/18(月) 18:34:59.92ID:HogVByKA0728デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/18(月) 20:33:20.53ID:lVEmBRA9d >>727
今読み始めたけど丁寧でわかりやすい
今読み始めたけど丁寧でわかりやすい
729デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/19(火) 10:23:20.37ID:mIuFgC1Fd 初歩の初歩の初歩の質問なんだけど
あるPCにポートXXを口とするサーバソフトを同時に二つ立てることはできないよね?
1つめはXXを使うとしてその後にたてられた2つめはどうなる?
(スレチっぽくなってますがよろしくです...)
あるPCにポートXXを口とするサーバソフトを同時に二つ立てることはできないよね?
1つめはXXを使うとしてその後にたてられた2つめはどうなる?
(スレチっぽくなってますがよろしくです...)
730デフォルトの名無しさん (ワッチョイ 2be3-SGtB)
2017/09/19(火) 10:38:02.75ID:S6233VLa0 出来ます
サーバー側はリクエストに応じて複数のプロセスを起動し、
同じポート番号を使って複数のプロセスが受け答えします
各プロセスはそれぞれで生成したソケットを使ってクライアントとやり取りします
サーバー側はリクエストに応じて複数のプロセスを起動し、
同じポート番号を使って複数のプロセスが受け答えします
各プロセスはそれぞれで生成したソケットを使ってクライアントとやり取りします
731デフォルトの名無しさん (スップ Sdf3-1/aj)
2017/09/19(火) 10:57:49.02ID:mIuFgC1Fd >>730
それってプログラム内でforkして子プロセスを作る場合の話です?
サーバソフトAとサーバソフトBの両立ができたとすると
ポートXX使用します!ってのはどこでどちらを使うと判断するのでしょうか...
それってプログラム内でforkして子プロセスを作る場合の話です?
サーバソフトAとサーバソフトBの両立ができたとすると
ポートXX使用します!ってのはどこでどちらを使うと判断するのでしょうか...
732デフォルトの名無しさん (ワッチョイ 936f-hIIm)
2017/09/19(火) 13:04:43.06ID:TdcUa1CK0 特定ポートでlistenするプロセスは一つだけです。
複数のプロセスで共用は出来ません。
複数のプロセスで共用は出来ません。
733デフォルトの名無しさん (ドコグロ MM9d-BsvU)
2017/09/19(火) 17:39:27.17ID:5tfXl8chM >>729
LANポートが複数あればできるし、LANポートがひとつしかなくてもIPアドレスを複数割り当てられるなら可能
LANポートが複数あればできるし、LANポートがひとつしかなくてもIPアドレスを複数割り当てられるなら可能
734デフォルトの名無しさん (ワッチョイ 016f-V8Sm)
2017/09/19(火) 18:44:47.92ID:PcYxkZC90735デフォルトの名無しさん (ワンミングク MMd3-MK5f)
2017/09/19(火) 18:49:41.83ID:Poc3cQP+M しかも間違ってるという
736デフォルトの名無しさん (ドコグロ MM9d-BsvU)
2017/09/19(火) 18:57:54.46ID:5tfXl8chM737デフォルトの名無しさん (オッペケ Sr4d-sxPP)
2017/09/19(火) 19:48:42.76ID:SHe+skknr >>736
二つ前のレスくらい読んでほしいものだ
二つ前のレスくらい読んでほしいものだ
738デフォルトの名無しさん (ワッチョイ ab1c-/PGn)
2017/09/19(火) 20:12:29.29ID:4ZFv917O0 C++98ではできない
C++11以後できるようになった
だろ、通信は本質的にマルチタスクだ
C++11以後できるようになった
だろ、通信は本質的にマルチタスクだ
739デフォルトの名無しさん (ワッチョイ 994d-o7xi)
2017/09/20(水) 00:14:27.26ID:zNeStlMI0 なにをいってるかよくわからんがすごい自信だ。
740デフォルトの名無しさん (ワッチョイ 8109-VUiJ)
2017/09/20(水) 01:48:22.84ID:E2xZjesx0 規格外のライブラリならほぼ何でもありといえばありだけどさ。
ライブラリ自信はまだ策定中でしょ。
ライブラリ自信はまだ策定中でしょ。
741デフォルトの名無しさん (ワッチョイ 6123-pFfB)
2017/09/20(水) 03:12:29.17ID:E3lPvo/Y0 bind()する時のローカルのIPアドレスを別々にすれば同一ポートで別々のサーバプログラムって動かないの?
742デフォルトの名無しさん (ワッチョイ 016f-V8Sm)
2017/09/20(水) 04:49:07.58ID:uOAr6bd90743デフォルトの名無しさん (ドコグロ MM65-BsvU)
2017/09/20(水) 06:46:32.53ID:k3KNfXHnM744742 (ワッチョイ 016f-V8Sm)
2017/09/20(水) 10:56:07.53ID:uOAr6bd90 自己訂正
>まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?
あはは、これは俺の勘違いだったわ
acceptで返されるソケットはlistenポートと同じポート番号を持っている
>まさかその生成されたソケットがサーバーと同じポート番号を持つとか思ってないよな?
あはは、これは俺の勘違いだったわ
acceptで返されるソケットはlistenポートと同じポート番号を持っている
745デフォルトの名無しさん (ワッチョイ 0665-hoCt)
2017/09/21(木) 05:09:49.50ID:t8iqXrAz0 質問です。
{ 10/*%*/ } = { a,b,c };
というのは、
a = 10%
b = 10%
c = 10%
なのでしょうか?それとも、
a+b+c = 10%
なのでしょうか?
{ 10/*%*/ } = { a,b,c };
というのは、
a = 10%
b = 10%
c = 10%
なのでしょうか?それとも、
a+b+c = 10%
なのでしょうか?
746デフォルトの名無しさん (ワッチョイ de23-KbB0)
2017/09/21(木) 05:48:27.92ID:eSaSp7RC0 C++を習得するのに莫大な時間を費やしました。
C++のプロフェッショナルなプログラマーになりたかった。
なのに、ハード系の知識が無いと言う理由で、もらう仕事はVB.NET、C#.NET系ばかりでした。
C++のプロフェッショナルなプログラマーになりたかった。
なのに、ハード系の知識が無いと言う理由で、もらう仕事はVB.NET、C#.NET系ばかりでした。
747デフォルトの名無しさん (ワッチョイ de23-KbB0)
2017/09/21(木) 05:51:26.56ID:eSaSp7RC0 質問を書くのを忘れやんした。
C++の仕事ってハード系、通信系、制御系以外、通常業務のシステム開発はないんでしょうか?
C++の仕事ってハード系、通信系、制御系以外、通常業務のシステム開発はないんでしょうか?
748デフォルトの名無しさん (ワッチョイ 8a9f-Dwg9)
2017/09/21(木) 06:00:29.19ID:Bo0/1phe0 ポート重複で同じアドレスでBananaサーバーみたいなラックマウントサーバーの仕組みってあれは一つのサーバーがlistenで待って接続してきたクライアントの処理を複数の子サーバーに割り振っているだけなのか?
749デフォルトの名無しさん (オッペケ Sra3-u5jE)
2017/09/21(木) 08:18:42.29ID:E1HbcZFyr struct unko { unko()=delete; };
int main() { unko u{}; }
何故コンパイルが通るのかを理解するのに半日かかった
やはりこの言語はクソ
int main() { unko u{}; }
何故コンパイルが通るのかを理解するのに半日かかった
やはりこの言語はクソ
750デフォルトの名無しさん (ワッチョイ fa2e-hoCt)
2017/09/21(木) 08:46:59.52ID:iktVOuYO0751デフォルトの名無しさん (ワッチョイ 06cd-kYwA)
2017/09/21(木) 10:13:00.29ID:JjsSVLys0 >>747
C++はC#とかでできないことがあるときに仕方なく使うイメージがある
C++はC#とかでできないことがあるときに仕方なく使うイメージがある
752デフォルトの名無しさん (オッペケ Sra3-mUFf)
2017/09/21(木) 11:36:34.81ID:p6kNBh4ir753デフォルトの名無しさん (ワッチョイ fa2e-hoCt)
2017/09/21(木) 12:35:00.95ID:iktVOuYO0 C#の方が楽なところが特に無いのでC#という選択肢が無い
754デフォルトの名無しさん (ワッチョイ 8a4b-nCCx)
2017/09/21(木) 13:21:38.51ID:TbHBi0+x0 >>750
お、おう!
お、おう!
756デフォルトの名無しさん (オッペケ Sra3-u5jE)
2017/09/21(木) 17:36:23.55ID:E1HbcZFyr >>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ではないと見なされている(たぶん)
規格によると 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ではないと見なされている(たぶん)
757デフォルトの名無しさん (ドコグロ MMc2-gXon)
2017/09/21(木) 22:11:37.04ID:VzX3yrPwM >>748
パケットレベルで振り分けたり、プロキシとして動作したり色々
ロードバランサ 仕組み
とかでググるがよろし
あとそこまで行くと完全にスレチなので
ネットワーク
http://mevius.2ch.net/hack/
とかに行っとくれ
パケットレベルで振り分けたり、プロキシとして動作したり色々
ロードバランサ 仕組み
とかでググるがよろし
あとそこまで行くと完全にスレチなので
ネットワーク
http://mevius.2ch.net/hack/
とかに行っとくれ
758デフォルトの名無しさん (ワッチョイ 8a9f-Dwg9)
2017/09/21(木) 23:20:34.43ID:Bo0/1phe0 ほほう
759デフォルトの名無しさん (ワッチョイ 0f23-Dc1X)
2017/09/23(土) 11:36:40.13ID:2CJ5RW/30 >>747
20年前は普通にあった、ていうかそれしか方法がなかったが
今はもっと楽な方法があるのでほぼ無くなった
僅かな例外はパフォーマンスを求めるようなプログラムを作る場合だが
それでもライブラリなどの表から見えない部分の作成に限られる
20年前は普通にあった、ていうかそれしか方法がなかったが
今はもっと楽な方法があるのでほぼ無くなった
僅かな例外はパフォーマンスを求めるようなプログラムを作る場合だが
それでもライブラリなどの表から見えない部分の作成に限られる
760デフォルトの名無しさん (KR 0Hc2-GWmJ)
2017/09/23(土) 21:53:53.16ID:DdQqqOWmH 各添字が 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」を関数の中で解釈する方法も分からなくて困っています。
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」を関数の中で解釈する方法も分からなくて困っています。
761デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/23(土) 22:14:21.88ID:dWsmcDp10 >>760
その例だと A[X][X][X] の3次元相当だけど3次元限定でいいの?
その例だと A[X][X][X] の3次元相当だけど3次元限定でいいの?
762デフォルトの名無しさん (ワッチョイ faa6-u5jE)
2017/09/23(土) 22:34:01.05ID:qTNnvPi+0 https://ideone.com/x9PCnt
こんなんでええやろ
こんなんでええやろ
763デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/23(土) 22:36:10.87ID:dWsmcDp10 >>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;
}
こういう解釈でいいかな?
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;
}
764デフォルトの名無しさん (ワッチョイ 8a9f-PvnN)
2017/09/23(土) 22:38:24.75ID:cFmXNXGU0 左辺が j, k ,i 右辺が i, j, k のようだが
765デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/23(土) 22:45:31.08ID:dWsmcDp10 あ、一気に全要素にFillしなくてもいいのかな?
766デフォルトの名無しさん (ワッチョイ 0af0-PvnN)
2017/09/24(日) 00:03:03.61ID:7FyCscw80 ……素直に3次元の配列にすりゃあいいんじゃねえのかなコレ
どーーーしても1次元にしなきゃいけない重大な理由が背後に控えてんのかな?
どーーーしても1次元にしなきゃいけない重大な理由が背後に控えてんのかな?
767デフォルトの名無しさん (スッップ Sdaa-pgy8)
2017/09/24(日) 00:08:42.25ID:xnpjieyid 普通にメモリ確保したら1次元だからな
768デフォルトの名無しさん (ワッチョイ 8aaa-Dc1X)
2017/09/24(日) 00:21:25.13ID:J5lzydll0 B[ii][jj][kk] = A[i][j][k];
でも通るな
でも通るな
769デフォルトの名無しさん (KR 0Hc2-GWmJ)
2017/09/24(日) 00:25:12.68ID:QX+6yKIgH770デフォルトの名無しさん (ワッチョイ 8a4b-nCCx)
2017/09/24(日) 02:35:34.07ID:0uAENq5F0771デフォルトの名無しさん (オッペケ Sra3-GWmJ)
2017/09/24(日) 17:29:12.46ID:vw1eQBGxr772デフォルトの名無しさん (ワッチョイ 8e3d-GWmJ)
2017/09/25(月) 00:05:50.55ID:KE0eJu6Z0 C++とほとんど関係ないな
773デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/25(月) 10:20:39.11ID:c/fcx1bx0 任意個数の引数って、まさか省略記号と可変個数実引数では・・・
と思ったらモロじゃねえか おいおい
このスレ的にはinitializer_listやtemplate parameter packだろ
と思ったらモロじゃねえか おいおい
このスレ的にはinitializer_listやtemplate parameter packだろ
774デフォルトの名無しさん (スップ Sd4a-6FY3)
2017/09/25(月) 11:38:31.09ID:VZWzPiEFd775デフォルトの名無しさん (ワンミングク MMfa-l1yT)
2017/09/25(月) 12:51:53.80ID:ML1gBCAMM >>774
同じ
同じ
776デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/25(月) 16:12:14.99ID:b+XdOI/H0 >>773
ほっといたっていずれ覚えるだろうに何故押し付けるのか
ほっといたっていずれ覚えるだろうに何故押し付けるのか
777デフォルトの名無しさん (ドコグロ MMaa-ve9A)
2017/09/25(月) 17:17:22.88ID:RnBeI/QIM778デフォルトの名無しさん (オッペケ Sra3-25Bv)
2017/09/25(月) 18:34:40.87ID:iFpSSPyJr >>774
違う
違う
779デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/26(火) 10:35:57.85ID:DAuKDJeY0780デフォルトの名無しさん (ワッチョイ eb11-Nrqi)
2017/09/26(火) 11:02:34.83ID:XbrOuhiT0781デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:38:28.30ID:XSwUFkBD0 つかぬことを伺いますが、
あるクラス内で定義した構造体を同クラス内でstatic constメンバとして宣言し、
外部で定義しようとしたところ、「〜との互換性がありません」と出て上手く行きません
どうすればよいのでしょうか
〜ヘッダ内
class Hage{
public:
struct A{
int a;
int b;
};
static const struct A M;
}
〜ソース内
#include "ヘッダ"
const struct A Hage::M; //不正
あるクラス内で定義した構造体を同クラス内でstatic constメンバとして宣言し、
外部で定義しようとしたところ、「〜との互換性がありません」と出て上手く行きません
どうすればよいのでしょうか
〜ヘッダ内
class Hage{
public:
struct A{
int a;
int b;
};
static const struct A M;
}
〜ソース内
#include "ヘッダ"
const struct A Hage::M; //不正
782デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:39:54.54ID:XSwUFkBD0 あ、行頭の半角スペース消されるの忘れてた
783デフォルトの名無しさん (ワッチョイ eb11-Nrqi)
2017/09/26(火) 11:48:05.08ID:XbrOuhiT0 const struct Hage::A Hage::M;
784デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/26(火) 11:48:55.33ID:r3ztyMSNd785デフォルトの名無しさん (ワッチョイ fa91-PvnN)
2017/09/26(火) 11:51:53.92ID:XSwUFkBD0 うわあ何でこんな初歩的なことに躓いていたんだアホらしい
>>783-784サンクス
>>783-784サンクス
786デフォルトの名無しさん (ワッチョイ d311-Dc1X)
2017/09/26(火) 15:18:58.40ID:SDiSqFpw0 ###HUM###
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END
000-K,AZ,0,1,
001-KI,L,I.T,DEF,11.2,TE,F,0.12235,
002-EM,OBLA,7##END
787デフォルトの名無しさん (ワッチョイ de1c-iatd)
2017/09/26(火) 15:24:00.47ID:DAuKDJeY0788デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/26(火) 16:32:49.03ID:XbrOuhiT0 >>787
まずはsageることから覚えような
まずはsageることから覚えような
789デフォルトの名無しさん (スプッッ Sd4a-6FY3)
2017/09/26(火) 16:36:37.77ID:r3ztyMSNd >>773の「モロじゃねえか」がどっから出てきてるのか謎だ
790デフォルトの名無しさん (ワッチョイ eb11-Dc1X)
2017/09/26(火) 17:08:16.18ID:XbrOuhiT0 多分Cの可変長引数なら右端以外にも書けると思ってんじゃないかな
791デフォルトの名無しさん (ワッチョイ 0f23-hoCt)
2017/09/26(火) 18:55:18.16ID:DXd+nok20 こんなイメージかな?
#define X (100)
#define f(a,b,c,d,e) ((b)[(c)+X*(d)+X*X*(e)] = (a)[(e)+X*(c)+X*X*(d)])
#define X (100)
#define f(a,b,c,d,e) ((b)[(c)+X*(d)+X*X*(e)] = (a)[(e)+X*(c)+X*X*(d)])
792デフォルトの名無しさん (オッペケ Sra3-t5bw)
2017/09/26(火) 19:31:39.64ID:T9NefDHyr >const struct A Hage::M; //不正
初歩的でなく相当に高度な気がしてならない
規格の3.4.1/p7,p8,p14あたりを頭に入れていないといけない
「class NS::C;」のように何でも「::」を付ければ良いと言うわけでもないので
初歩的でなく相当に高度な気がしてならない
規格の3.4.1/p7,p8,p14あたりを頭に入れていないといけない
「class NS::C;」のように何でも「::」を付ければ良いと言うわけでもないので
793デフォルトの名無しさん (ワッチョイ 1e7a-Gpzj)
2017/09/26(火) 22:59:17.35ID:pvKSJMRt0 そうでもない
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【サッカー】元日本代表DF冨安がオランダ1部アヤックスと大筋合意か 現地メディア報じる [久太郎★]
- 【画像】小泉防衛大臣の頭皮、存立危機に認定 [834922174]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 🏡
- 高市早苗「竹島は日本領土」 [834922174]
- GDP世界二位だった日本国が、ここまで衰退腐敗してしまった理由って冗談抜きで何????? [804169411]
