次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part129
http://echo.2ch.net/test/read.cgi/tech/1483940967/
このスレもよろしくね。
【初心者歓迎】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
探検
C++相談室 part130 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ f37a-QmV0)
2017/03/31(金) 08:47:49.65ID:UkLjKqcm02デフォルトの名無しさん (ワッチョイ bf54-lR6P)
2017/03/31(金) 16:52:18.52ID:CoeIAoH10 STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
3デフォルトの名無しさん (ワッチョイ 3f78-QHHb)
2017/03/31(金) 17:03:31.51ID:qlAKv2q70 >>1乙
4デフォルトの名無しさん (ワッチョイ ef14-oQcP)
2017/04/01(土) 09:35:38.04ID:JSPgwSTt0 テンプレートで曖昧なものは強制的に解決させる方法ってあります?
template<typename A, typename B> void func(A a, B b);
func(2.f,3.f); // float
func(2.,3.); // double
func(2.f,3.);// floatで呼び出したい
template<typename A, typename B> void func(A a, B b);
func(2.f,3.f); // float
func(2.,3.); // double
func(2.f,3.);// floatで呼び出したい
5デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/01(土) 10:06:09.92ID:vvD/Bq3hr こういう質問を見ると
何処に落とし穴が有るのだろうと勘ぐってしまう
何処に落とし穴が有るのだろうと勘ぐってしまう
6デフォルトの名無しさん (ワッチョイ d3a6-agmj)
2017/04/01(土) 10:15:43.84ID:vxnrpS460 「強制的に」の解釈だろうね
7デフォルトの名無しさん (ワッチョイ cf29-MCV6)
2017/04/01(土) 10:21:35.44ID:8wn5/JcH0 func<float, float>(2.f, 3.);
8今日は何の日? (ワッチョイ bf7a-mgDT)
2017/04/01(土) 11:36:07.15ID:3A8hlFXh0 'f' 一文字で済む方法が2行上に示されているが…
func(2.f,(float)3.); // てへっ
出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
スペシャライゼーションか非テンプレート版でイグザクトマッチを
用意すればいいじゃないかな
func(2.,3.f); の時は float 優先なのか第一引数優先なのか
ロジックによっては元の設計を見直すべきかも
func(2.f,(float)3.); // てへっ
出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
スペシャライゼーションか非テンプレート版でイグザクトマッチを
用意すればいいじゃないかな
func(2.,3.f); の時は float 優先なのか第一引数優先なのか
ロジックによっては元の設計を見直すべきかも
9デフォルトの名無しさん (ワッチョイ ef14-oQcP)
2017/04/01(土) 11:43:51.07ID:JSPgwSTt0 >>8
>出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
そういうことです
static_castが可能な型同士に限定されるとは思いますが
>スペシャライゼーションか非テンプレート版でイグザクトマッチ
なるほど
なおfunc(2.,3.f)でもfloatですね
>出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
そういうことです
static_castが可能な型同士に限定されるとは思いますが
>スペシャライゼーションか非テンプレート版でイグザクトマッチ
なるほど
なおfunc(2.,3.f)でもfloatですね
10デフォルトの名無しさん (ワッチョイ a356-8BmZ)
2017/04/01(土) 11:59:09.40ID:gOIdtRSt0 お前にテンプレートはまだはやい
11デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/01(土) 12:50:11.46ID:vvD/Bq3hr >スペシャライゼーションか
実用性皆無の糞コードしか想像出来ない
実用性皆無の糞コードしか想像出来ない
12デフォルトの名無しさん (ワッチョイ 3f3b-MCV6)
2017/04/01(土) 18:22:19.01ID:2DXDopa10 そもそも糞コードしか書けない人は何に対してもそうだろ
13デフォルトの名無しさん (ワッチョイ f37a-QmV0)
2017/04/01(土) 19:25:28.02ID:Pijd2zbh0 練習しなきゃ良いコードは書けるようにならない
14デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/01(土) 19:35:34.93ID:iUvRbgEsr そうだな
ただ練習したら必ず良いコードが書ける訳でもない
例えばPODをコピーするのにpragma pack1してmemcpyし始めるK&Rおじさんとか
ただ練習したら必ず良いコードが書ける訳でもない
例えばPODをコピーするのにpragma pack1してmemcpyし始めるK&Rおじさんとか
15デフォルトの名無しさん (ワッチョイ f359-HQfx)
2017/04/01(土) 19:38:01.60ID:p1TV7r2C0 個人的には関数引数の弱い型への変換という
C++言語規約上の暗黙的変換とは逆の流れを引き起こすような記述を
通常と同じような見かけの記述にすることは紛らわしいと希ガス
コード共通化を重視するなら>>7に従うか、あるいはfunc(2.f, 3.f)にするとかして呼び出し元で型を明示し、
そうではなくて弱い型への暗黙的変換を伴うバージョンのfunc()が他とは別のコードになる(スペシャライゼーション対象足りえる
なら、スペシャライゼーションの代わりにfuncを別名にするとかとにかく一目でわかるようにするのが実用的
かと、
C++言語規約上の暗黙的変換とは逆の流れを引き起こすような記述を
通常と同じような見かけの記述にすることは紛らわしいと希ガス
コード共通化を重視するなら>>7に従うか、あるいはfunc(2.f, 3.f)にするとかして呼び出し元で型を明示し、
そうではなくて弱い型への暗黙的変換を伴うバージョンのfunc()が他とは別のコードになる(スペシャライゼーション対象足りえる
なら、スペシャライゼーションの代わりにfuncを別名にするとかとにかく一目でわかるようにするのが実用的
かと、
16デフォルトの名無しさん (ワッチョイ f37a-QmV0)
2017/04/01(土) 21:58:54.19ID:Pijd2zbh0 >>14
練習とは既にあるより良い方法を真似することだから身につかないのは練習になっていないかやる気が無いかだ
練習とは既にあるより良い方法を真似することだから身につかないのは練習になっていないかやる気が無いかだ
17デフォルトの名無しさん (ワッチョイ 3f6f-MCV6)
2017/04/02(日) 07:31:30.34ID:NX0JHgEX0 誰か15を日本語訳してくれ
18デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/02(日) 07:42:27.51ID:0DgUIb4er >>17
・func(0.0f, 0.0)は一見精度落ちない様に見えるがfloatに落ちるのが嫌
・だからfnuc<float>の様な明示的な呼び出しにするか、fnuc_fの様な名前で工夫すべき
・template<> func<double,float>なんて特殊化する暇があったら
非テンプレートのfuncf作れ
・つまりfloat v;「v=0.0;」もコンパイラーの警告だけなのでNG
・もう変数名はシステムハンガリアンしか無いぜ
・func(0.0f, 0.0)は一見精度落ちない様に見えるがfloatに落ちるのが嫌
・だからfnuc<float>の様な明示的な呼び出しにするか、fnuc_fの様な名前で工夫すべき
・template<> func<double,float>なんて特殊化する暇があったら
非テンプレートのfuncf作れ
・つまりfloat v;「v=0.0;」もコンパイラーの警告だけなのでNG
・もう変数名はシステムハンガリアンしか無いぜ
19デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/02(日) 08:00:42.30ID:0DgUIb4er 型変換に於ける定数のルールはC++11で見直されたので
「v=0.0;」は例が良くなかったな。まあいいか
「v=0.0;」は例が良くなかったな。まあいいか
20デフォルトの名無しさん (ワッチョイ f359-HQfx)
2017/04/02(日) 08:01:44.33ID:M04XElTC021デフォルトの名無しさん (ワッチョイ bf6b-agmj)
2017/04/02(日) 11:47:36.98ID:XLcHLDuG0 計算がメインの、建築用CADとか、航空流体力学のちょっとしたソフトとかだと、過剰ではないかもしれない
doubleとfloatとでの四つの組み合わせがちょくちょく登場する計算、
funcのfloatとdoubleの組み合わせで厳密に誤差計算しているような気がする
もしもそうだとすると単精度の誤差すらも気にするようなヤバいシステムがコードの背後に見える
……トカマク式核融合炉の制御ソフトの一部かもな
doubleとfloatとでの四つの組み合わせがちょくちょく登場する計算、
funcのfloatとdoubleの組み合わせで厳密に誤差計算しているような気がする
もしもそうだとすると単精度の誤差すらも気にするようなヤバいシステムがコードの背後に見える
……トカマク式核融合炉の制御ソフトの一部かもな
22デフォルトの名無しさん (スッップ Sddf-M0et)
2017/04/03(月) 21:44:49.44ID:muLND53td AD変換器なんてノイズ多い環境じゃ16bit以上のものなんて使えないぞ
電力関係なら12bit位だろ
いかにその分解能でしっかり制御するかが重要で
算数的な精度なんてどーでもいいのさ
電力関係なら12bit位だろ
いかにその分解能でしっかり制御するかが重要で
算数的な精度なんてどーでもいいのさ
23デフォルトの名無しさん (ワッチョイ b310-MCV6)
2017/04/03(月) 21:49:37.61ID:iUZo1Vn10 最後の1行を除き同意
24デフォルトの名無しさん (スッップ Sddf-M0et)
2017/04/03(月) 22:07:16.82ID:muLND53td 偉い人向けに表示上だけは電卓に合わせないとうるさいって話かな
25デフォルトの名無しさん (ワッチョイ f37a-QmV0)
2017/04/03(月) 22:36:46.92ID:rMPFCCT20 電池とかのラインで使われてる計測器だと有効なのは小数点以下は3桁くらいまでかな
26デフォルトの名無しさん (ワッチョイ b310-MCV6)
2017/04/03(月) 22:41:35.95ID:iUZo1Vn10 最小目盛りの10分の1
27デフォルトの名無しさん (ワッチョイ ef14-oQcP)
2017/04/03(月) 22:48:03.77ID:teq5sGj/0 数学的なベクトルのクラスで
template<int N> vec{ double v[N];};
などとした場合、コンストラクタで各成分を指定したいようなときって
どうするのが筋ですかね?
それとも引数の数が変わるのがわかってるようなケースはテンプレートすべきではない?
template<int N> vec{ double v[N];};
などとした場合、コンストラクタで各成分を指定したいようなときって
どうするのが筋ですかね?
それとも引数の数が変わるのがわかってるようなケースはテンプレートすべきではない?
28デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/03(月) 22:59:42.22ID:/XngI6+6r こういういかにもな質問を見ると、
何処に落とし穴が有るのだろうと勘ぐってしまう
何処に落とし穴が有るのだろうと勘ぐってしまう
29デフォルトの名無しさん (ワッチョイ bf80-QHHb)
2017/04/03(月) 23:08:28.79ID:BzAHvGte030デフォルトの名無しさん (ワッチョイ ef14-oQcP)
2017/04/03(月) 23:15:39.73ID:teq5sGj/0 double d[]={0.,1.,2.};
vec v(d);
みたいなことですかね?
あと今思いついたのは共通に処理できるところだけ
template<int N> struct vec_base{double v[N];}
template<int N> struct vec {};
template<>strct vec<3> : public vec_base<3>{ vec(double, double, double);};
みたいな
vec v(d);
みたいなことですかね?
あと今思いついたのは共通に処理できるところだけ
template<int N> struct vec_base{double v[N];}
template<int N> struct vec {};
template<>strct vec<3> : public vec_base<3>{ vec(double, double, double);};
みたいな
31デフォルトの名無しさん (ワッチョイ bfcd-jsM4)
2017/04/03(月) 23:18:11.93ID:xWKBtMgw0 可変長テンプレートじゃだめなの
32デフォルトの名無しさん (ワッチョイ ef14-oQcP)
2017/04/03(月) 23:38:46.07ID:teq5sGj/0 そんなのありましたね・・・
調べてみます
調べてみます
33デフォルトの名無しさん (ワッチョイ bfcc-hXdu)
2017/04/04(火) 02:27:46.41ID:cqsAbaT40 template<int... args>
34デフォルトの名無しさん (ワッチョイ 733c-kVPK)
2017/04/04(火) 12:47:55.32ID:CFV3B2Uw0 Nは要素数だからそれじゃダメやろ
35デフォルトの名無しさん (スッップ Sddf-mnw5)
2017/04/04(火) 13:09:36.94ID:6xG2515ud template <typename... T> は機能するけどこの場合ちょっとやだな
36デフォルトの名無しさん (ワッチョイ 3f91-MCV6)
2017/04/04(火) 15:20:53.13ID:SRqXkALx0 sizeof... の使いどころじゃね?
37デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/04(火) 17:42:54.88ID:Xbh3DIbfr 質問者がコンストラクターを使用したいと言っている以上
残念なコードになることは不可避
static_assertでも入れとくしかない
残念なコードになることは不可避
static_assertでも入れとくしかない
38デフォルトの名無しさん (オッペケ Sr17-bOuD)
2017/04/04(火) 20:17:58.88ID:Xbh3DIbfr ネタも投下されないようなので取り敢えず貼っとくか
http://ideone.com/MjE67k
http://ideone.com/MjE67k
39デフォルトの名無しさん (ワッチョイ bf80-QHHb)
2017/04/04(火) 20:55:09.83ID:vk9hQqDM040デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/06(木) 07:41:45.88ID:aL+qmOiO0 質問ですが、bool型の変数x値(true/false)をint型の1/0に変換する場合、
(int)xで正しいの?それとも演算子を使ってx!=falseとか!!xとすべき?
あるいは
int y; if(x) { y = 1; } else { y = 0; }
式にやらなきゃダメ?
そもそもC++においても「!」、「!=」、「==」(オーバーロードされていないやつ)はintを返すんやろうか…
(int)xで正しいの?それとも演算子を使ってx!=falseとか!!xとすべき?
あるいは
int y; if(x) { y = 1; } else { y = 0; }
式にやらなきゃダメ?
そもそもC++においても「!」、「!=」、「==」(オーバーロードされていないやつ)はintを返すんやろうか…
41デフォルトの名無しさん (ワッチョイ be14-4Usw)
2017/04/06(木) 07:49:27.05ID:XYhavOUb0 x?1:0
42デフォルトの名無しさん (ワッチョイ f3b4-GJ90)
2017/04/06(木) 08:13:07.80ID:WJuxfIBi0 N4660の
7.6p6
8.3.1p9
8.10p1
あたりを読んでから質問するという発送は無いものか
7.6p6
8.3.1p9
8.10p1
あたりを読んでから質問するという発送は無いものか
43デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
2017/04/06(木) 08:18:19.01ID:3pIc1pJU044デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/06(木) 08:36:31.85ID:8pWbCGLcr 一般人はtypeidを知らない可能性があるが
auto x = (0 == 0);
と書いてxの上にマウスカーソルを持って行く知能は欲しいところ
auto x = (0 == 0);
と書いてxの上にマウスカーソルを持って行く知能は欲しいところ
45デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
2017/04/06(木) 08:49:41.77ID:3pIc1pJU0 一般人てコンパイラって何?な人?
46デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/06(木) 10:25:11.03ID:zY+rYc0kr 企業に勤めていて日常的にC++言語を使うような人、かな
47デフォルトの名無しさん (ワッチョイ 7f93-+TA9)
2017/04/06(木) 11:12:46.55ID:3pIc1pJU0 日常的にC++使っててtypeid知らないなんて死刑だろ
48デフォルトの名無しさん (スッップ Sd92-dvjh)
2017/04/06(木) 11:30:17.09ID:b6mS5n8zd 知っていても使わないなあ
試しに実験したことはあるかも
試しに実験したことはあるかも
49デフォルトの名無しさん (スッップ Sd92-dvjh)
2017/04/06(木) 11:30:45.11ID:b6mS5n8zd C++たまにしか使いません
50デフォルトの名無しさん (ワッチョイ fb4a-TXVw)
2017/04/06(木) 18:35:51.13ID:H/56SjdK0 少し前からDXライブラリの勉強を始めました
「ポンクソフト」というサイトさんの「C/C++言語とDXライブラリでゲーム作成入門」というページを真似ながら勉強しています
そこの「6.オセロの作成」に先程着手したんですが、何度見返しても以下のエラーが出て実行できません
一つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行67
二つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行80
解決方を求めて「C3872」「0x200e」などと検索したんですが、解決方を見つけることは叶いませんでした
どなたか私に原因と解決方を教えて下さい
「ポンクソフト」というサイトさんの「C/C++言語とDXライブラリでゲーム作成入門」というページを真似ながら勉強しています
そこの「6.オセロの作成」に先程着手したんですが、何度見返しても以下のエラーが出て実行できません
一つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行67
二つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行80
解決方を求めて「C3872」「0x200e」などと検索したんですが、解決方を見つけることは叶いませんでした
どなたか私に原因と解決方を教えて下さい
51片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c)
2017/04/06(木) 18:43:30.36ID:0SmLVS9od >>50
全角文字と半角文字の違いに気を付けて。コンピュータは全角と半角を区別する。
全角文字と半角文字の違いに気を付けて。コンピュータは全角と半角を区別する。
52デフォルトの名無しさん (ワッチョイ f26b-D6lx)
2017/04/06(木) 18:43:47.28ID:oAa8xYYx0 そこのURLを貼ってくれると話はさらに早くなる
53デフォルトの名無しさん (ワッチョイ fb4a-TXVw)
2017/04/06(木) 18:53:48.85ID:H/56SjdK054デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/06(木) 19:06:55.02ID:zY+rYc0kr そりゃpriorityの後に変な文字が入ってるからな
U+200EはC++で使っていい文字に入っていない
U+200EはC++で使っていい文字に入っていない
55デフォルトの名無しさん (ワッチョイ f22a-UNHW)
2017/04/06(木) 19:17:42.97ID:NIAe6HmI0 確かに67行目と80行目の"priority"の右に見えない文字 (LRM) が入ってるね
なんでこんなもんが紛れてるのか謎だけどそれを消せばコンパイル通るんじゃない
なんでこんなもんが紛れてるのか謎だけどそれを消せばコンパイル通るんじゃない
56デフォルトの名無しさん (ワッチョイ fb4a-TXVw)
2017/04/06(木) 19:19:47.39ID:H/56SjdK057デフォルトの名無しさん (ワッチョイ fb4a-TXVw)
2017/04/06(木) 19:23:16.61ID:H/56SjdK0 >>55
消したらコンパイル通りました
今までは「サイトのコピペ」→「解説読んで納得」→「各文に自分が分かるようにコメント付け」という方法で勉強してたので、
これを機にコピペはやめて全て自分で打ち込むことにします
ありがとうございました
消したらコンパイル通りました
今までは「サイトのコピペ」→「解説読んで納得」→「各文に自分が分かるようにコメント付け」という方法で勉強してたので、
これを機にコピペはやめて全て自分で打ち込むことにします
ありがとうございました
58デフォルトの名無しさん (ワッチョイ cf7a-02AM)
2017/04/06(木) 20:18:57.75ID:yrLcUnI00 >>42
普通その数字が何を意味するのかすらわからねえよ
普通その数字が何を意味するのかすらわからねえよ
59デフォルトの名無しさん (ワッチョイ 52c3-7E04)
2017/04/06(木) 21:09:55.73ID:i8ka60Xp0 >>42
なんで贈り物送らないといけないのか
なんで贈り物送らないといけないのか
60デフォルトの名無しさん (ワッチョイ cfb5-H1JN)
2017/04/07(金) 00:12:27.63ID:GKfKrOhh0 >>57
コピペ後に理解というやり方から
理解した上で打ち込むって考え方がいいと思うよ
実務でも似たような処理をコピペした時に
別の変数参照するように変える必要があったのに
1ヶ所変え忘れて問題になった何て言う事例もありがち
コピペ後に理解というやり方から
理解した上で打ち込むって考え方がいいと思うよ
実務でも似たような処理をコピペした時に
別の変数参照するように変える必要があったのに
1ヶ所変え忘れて問題になった何て言う事例もありがち
61デフォルトの名無しさん (ワッチョイ d2ed-2ODd)
2017/04/07(金) 00:44:12.95ID:T22AFNFv0 勉強中は兎も角、実務でコピペコーディングしてバグ仕込むとか入念に拷問した後死刑でも仕方ないレベルだからな
62デフォルトの名無しさん (ワッチョイ cf7a-02AM)
2017/04/07(金) 01:17:29.90ID:hMKnjdw+0 そんなにコピペすることってあるか?
63デフォルトの名無しさん (ワッチョイ 0775-yu7M)
2017/04/07(金) 02:53:31.90ID:k32kujyO0 ないアルよ
64デフォルトの名無しさん (ワッチョイ fb79-xvm/)
2017/04/07(金) 03:15:46.83ID:2Lzx/lCN0 まあ、スニペットなんて言い方してても実態はコピペだからな。
65デフォルトの名無しさん (ワッチョイ 2213-D6lx)
2017/04/07(金) 12:08:05.92ID:9gQAwyyc0 プログラミングなんて同じことの繰り返しなんだから、コピペで済ませたほうがいいよ
66デフォルトの名無しさん (スップ Sdb2-C2yt)
2017/04/07(金) 12:42:46.10ID:ykM1heJrd コード書いてていうほどコピペしなくね
67デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/07(金) 14:14:16.56ID:FkJcTuLk0 コピペしなきゃいけない自分が情けなくなるね
同じことを二度は言わないスマートさが足りないんだって
同じことを二度は言わないスマートさが足りないんだって
68デフォルトの名無しさん (JP 0H2e-TKAZ)
2017/04/07(金) 15:08:17.29ID:4pSi19lZH static int a[]; // prototype
static int a[] = {1,2,3,4};
int getitem(int n) {
return a[n];
}
このコード、
gcc -Wall -c -o hoge.o hoge.c
だったら何のエラーも警告も出ないけど、
g++ -Wall -c -o hoge.o hoge.c
だとaのサイズがわからん、とエラーになるんですが、
c++だとどう書けばいいんですか?
static int a[] = {1,2,3,4};
int getitem(int n) {
return a[n];
}
このコード、
gcc -Wall -c -o hoge.o hoge.c
だったら何のエラーも警告も出ないけど、
g++ -Wall -c -o hoge.o hoge.c
だとaのサイズがわからん、とエラーになるんですが、
c++だとどう書けばいいんですか?
69デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/07(金) 17:44:51.15ID:FkJcTuLk0 namespace
{
extern int a[]; // prototype
int a[] = {1,2,3,4};
}
int getitem(int n) {
return a[n];
}
{
extern int a[]; // prototype
int a[] = {1,2,3,4};
}
int getitem(int n) {
return a[n];
}
70デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/08(土) 12:17:44.66ID:TFmwEDa6r extern int a[]; はprototypeじゃないけどな
71デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/08(土) 13:44:56.17ID:L4KgTOQ90 未だにexternの役割がよくわかんね;
付けなくても宣言できて勝手に外部リンケージになるし…
K&R本はどっか行った;
付けなくても宣言できて勝手に外部リンケージになるし…
K&R本はどっか行った;
72デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/08(土) 16:54:00.75ID:LBU0hU+r0 実体を定義するのかしないのか曖昧なところをはっきりさせたり
デフォで内部結合なものを強制的に外部結合させたり
無名namespaceは逆で強制的に外部結合なものに妨害工作する
デフォで内部結合なものを強制的に外部結合させたり
無名namespaceは逆で強制的に外部結合なものに妨害工作する
73デフォルトの名無しさん (アウアウイー Sa97-lIlP)
2017/04/08(土) 17:25:09.91ID:8P1QJwbCa74デフォルトの名無しさん (ワッチョイ fb56-Hufg)
2017/04/08(土) 17:34:57.89ID:8rt7+cSn0 //static int a[]; // prototype
static int a[] = {1,2,3,4};
これでOK
static int a[] = {1,2,3,4};
これでOK
75デフォルトの名無しさん (アウアウイー Sa97-lIlP)
2017/04/08(土) 17:54:16.17ID:8P1QJwbCa ↓みたいに、相互参照するstaticなデータを初期化するときはどうするのよ?
こういうのは、CとC++で互換性あるコードは書けんのかね?
#include <stdio.h>
struct A {
char *s;
struct A *p;
};
static struct A a[];
static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
int main(){
printf("%s, %s\n", a[0].s, a[0].p->s);
printf("%s, %s\n", b[1].s, b[1].p->s);
return 0;
}
こういうのは、CとC++で互換性あるコードは書けんのかね?
#include <stdio.h>
struct A {
char *s;
struct A *p;
};
static struct A a[];
static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
int main(){
printf("%s, %s\n", a[0].s, a[0].p->s);
printf("%s, %s\n", b[1].s, b[1].p->s);
return 0;
}
76デフォルトの名無しさん (ワッチョイ 36a3-D6lx)
2017/04/08(土) 18:22:48.95ID:lscI+aDp0 前方宣言の方のstaticを削りゃいいんじゃね?
77片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c)
2017/04/08(土) 18:29:35.52ID:QtLPEhOXd static変数を別の翻訳単位から参照するのはおかしいんじゃね? 俺だったらexternにするぞ。
78デフォルトの名無しさん (ワッチョイ 72cc-n0J+)
2017/04/08(土) 20:50:02.31ID:N0c155CY0 K&RならC勉強していた女子社員にやったわ
姉貴が蛍光ペンで目茶苦茶にしてくれたからもう要らなかったんけどねw
姉貴が蛍光ペンで目茶苦茶にしてくれたからもう要らなかったんけどねw
>>71
lib や *.o を単独で配布して,そのヘッダを書くとき(lib/o の中に静的変数がある)ときは,extern はないと困るだろうな,とは思う
extern 不要論を連呼するキチガイがいるらしいから,注意したほうがいい
lib や *.o を単独で配布して,そのヘッダを書くとき(lib/o の中に静的変数がある)ときは,extern はないと困るだろうな,とは思う
extern 不要論を連呼するキチガイがいるらしいから,注意したほうがいい
80デフォルトの名無しさん (ワッチョイ be14-4Usw)
2017/04/08(土) 21:34:09.29ID:ATd5Gv2i0 でも実際extern からアクセスしろってライブラリは見たこと無い
普通関数じゃね?
普通関数じゃね?
81デフォルトの名無しさん (ワッチョイ 72cd-8Vmj)
2017/04/08(土) 21:38:17.52ID:J+fRzcYw0 クソライブラリを使うときにexternないと困るな
>>80
例えば <cstdio> の FILE *stdout とか
外部のライブラリの中の静的変数へのプロトタイプとして
FILE *stdout;
て書くと多分そのモジュールに stdout が確保されてしまうんじゃないかな?
関数は
int f();
だけで実体がないのだったらプロトタイプだとわかるけれども
変数は実体を伴うのか参照なのかを区別できない気がする
関数だけ提供するライブラリが存在するのは理解できる
例えば <cstdio> の FILE *stdout とか
外部のライブラリの中の静的変数へのプロトタイプとして
FILE *stdout;
て書くと多分そのモジュールに stdout が確保されてしまうんじゃないかな?
関数は
int f();
だけで実体がないのだったらプロトタイプだとわかるけれども
変数は実体を伴うのか参照なのかを区別できない気がする
関数だけ提供するライブラリが存在するのは理解できる
83デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/08(土) 21:56:34.32ID:LBU0hU+r0 >>75
つ__cplusplus
つ__cplusplus
84デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/08(土) 23:26:49.13ID:TFmwEDa6r externの必要性をとうとう理解してしまったQ
それに対し相変わらずコミュ障のもう一人のクソコテ
それに対し相変わらずコミュ障のもう一人のクソコテ
85デフォルトの名無しさん (アウアウイー Sa97-lIlP)
2017/04/08(土) 23:36:29.56ID:8P1QJwbCa >>83
#ifdef __cplusplus
#define _static
#define _extstatic extern
namespace {
#else
#define _static static
#define _extstatic static
#endif
_extstatic struct A a[];
_static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
_static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
#ifdef __cplusplus
}
#endif
まぁ、確かにこんだけ書けばCでもC++でも無警告でコンパイル通ったけど、
まぁ面倒ですこと(゚д゚)!
#ifdef __cplusplus
#define _static
#define _extstatic extern
namespace {
#else
#define _static static
#define _extstatic static
#endif
_extstatic struct A a[];
_static struct A b[] = {{"1st in b[]", a}, {"2nd in b[]", a+1}};
_static struct A a[] = {{"1st in a[]", b}, {"2nd in a[]", b+1}};
#ifdef __cplusplus
}
#endif
まぁ、確かにこんだけ書けばCでもC++でも無警告でコンパイル通ったけど、
まぁ面倒ですこと(゚д゚)!
86デフォルトの名無しさん (ワッチョイ 7f8c-7E04)
2017/04/08(土) 23:39:18.99ID:bfo0YVHI0 >>85
わざわざc使わなくてもc++だけでよかでしょ?
わざわざc使わなくてもc++だけでよかでしょ?
87デフォルトの名無しさん (ワッチョイ cf7a-02AM)
2017/04/09(日) 00:00:11.10ID:cP8aqgv30 Cでも使いたい人には自分でラッパー作ってくれと言ってるわ
88デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 00:52:09.49ID:djBIOydUr89デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 01:02:23.00ID:djBIOydUr90片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c)
2017/04/09(日) 07:01:35.78ID:qFsmFYyfd わっしょい、わっしょい
91片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c)
2017/04/09(日) 07:08:55.81ID:qFsmFYyfd 自分の理解できないことを、何でもコミュ症で片付けるやつ、嫌い。
92片山博文MZ ◆T6xkBnTXz7B0 (スププ Sd92-+G+c)
2017/04/09(日) 07:13:22.07ID:qFsmFYyfd 言語障害って日本語があるのに、何で意味不明な略したりするのかな。臆病者だから?
>>84
ところが C には仮定義というものがあって,仮定義しておけば静的変数を共有できるんだよ
だから extern は要らない子!と主張できるんだ
ここは C++ だから,仮定義が出来ない前提で話しているだけだよ
君はまだまだ浅いね
ところが C には仮定義というものがあって,仮定義しておけば静的変数を共有できるんだよ
だから extern は要らない子!と主張できるんだ
ここは C++ だから,仮定義が出来ない前提で話しているだけだよ
君はまだまだ浅いね
94デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 08:37:34.70ID:djBIOydUr95デフォルトの名無しさん (ワッチョイ 130e-+TA9)
2017/04/09(日) 09:10:41.09ID:A2LIIX7y0 仮定義はリンカが頑張って実現してるんだが
リンカのマップ情報とか見たことないの?
リンカのマップ情報とか見たことないの?
96デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 09:37:03.20ID:djBIOydUr なるほど
仮定義というものが何なのか理解していないのでこういうとんちんかんな発言になるのだな
仮定義というものが何なのか理解していないのでこういうとんちんかんな発言になるのだな
97デフォルトの名無しさん (ワッチョイ 130e-+TA9)
2017/04/09(日) 10:11:41.88ID:A2LIIX7y0 それはこっちの台詞だyo
98デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 10:30:05.69ID:elB46Etj0 仮定義ってなんだっけ
extern int a; が複数の翻訳単位にあったら勝手にaの実体が1個できるというやつだっけ;
C++には無いの?(驚愕
extern int a; が複数の翻訳単位にあったら勝手にaの実体が1個できるというやつだっけ;
C++には無いの?(驚愕
>>98
仮定義はリンカにおんぶにだっこしてもらう仕様だよ
extern を書かなくてもいい、というものだ
実体を持たない普通の外部変数と同じように
int evil_global;
とか書くだけでいい、ヘッダに extern int evil_global; と書く必要がなくなる(宣言部分での初期化はできないことに注意)
いやまあ、ちょっと追いきれていないところがあって、まだ俺も浅いのはみとめるが、とりあえず C++ にはないので、みなかったことにしている
議論が続きそうだが俺は参加しないよ
仮定義はリンカにおんぶにだっこしてもらう仕様だよ
extern を書かなくてもいい、というものだ
実体を持たない普通の外部変数と同じように
int evil_global;
とか書くだけでいい、ヘッダに extern int evil_global; と書く必要がなくなる(宣言部分での初期化はできないことに注意)
いやまあ、ちょっと追いきれていないところがあって、まだ俺も浅いのはみとめるが、とりあえず C++ にはないので、みなかったことにしている
議論が続きそうだが俺は参加しないよ
>>94
仮定義は翻訳単位に閉じたとはいいきれないよ
仮定義は翻訳単位に閉じたとはいいきれないよ
101デフォルトの名無しさん (ワッチョイ bf35-D1KF)
2017/04/09(日) 11:04:16.30ID:Cfl4+wb20102デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 17:20:17.02ID:djBIOydUr >>98
>複数の翻訳単位にあったら勝手にaの実体が1個
それはQの妄想というやつで仮定義とは別
なおISO/ IEC 9899:2011では未定義動作になっているので仮に実体が一個になっても違反ではない
>複数の翻訳単位にあったら勝手にaの実体が1個
それはQの妄想というやつで仮定義とは別
なおISO/ IEC 9899:2011では未定義動作になっているので仮に実体が一個になっても違反ではない
103デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 19:24:59.42ID:elB46Etj0 「仮定義」でググッたらあったわ;
ttp://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/devwin32/tentativedefinitions_xml.html
extern、static、初期化のいずれも無しの変数宣言っぽいものが(関数外のスコープで)複数個現れたとき、
C言語規格の方が高度なことをしてくれるのか
(C++では>>102によると未定義動作とのことなので同じ結果になるかどうかは規格外の仕様に拠る。
しかし上の説明だけでは関数宣言にexternを付ける意味がまだわかんね;
ttp://docs.embarcadero.com/products/rad_studio/radstudio2007/RS2007_helpupdates/HUpdate4/JA/html/devwin32/tentativedefinitions_xml.html
extern、static、初期化のいずれも無しの変数宣言っぽいものが(関数外のスコープで)複数個現れたとき、
C言語規格の方が高度なことをしてくれるのか
(C++では>>102によると未定義動作とのことなので同じ結果になるかどうかは規格外の仕様に拠る。
しかし上の説明だけでは関数宣言にexternを付ける意味がまだわかんね;
104デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
2017/04/09(日) 19:56:25.40ID:9WDYOgp70105デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 20:10:15.00ID:elB46Etj0 いやすまん「規格外の仕様に拠る」はやや誤解して書いてたわ;
下記の通り、未定義動作を含むコードは合法には成り得ず、実行できるかもしれないが、結果は保証されない。(つまり違反
ttp://www.c-lang.org/detail/undefined_behavior.html
>未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい(診断メッセージの発行を伴っても伴わなくてもよい。)。
>さらに(診断メッセージを出力し)翻訳又は実行を中断してもよい。
ここで、診断メッセージ云々とか「文書化された,環境に特有な方法で処理」とは安全に実行を止めることを意味する
Windowsでアプリのクラッシュ時に出てくるダイアログとか、コアダンプとかがそれにあたる
下記の通り、未定義動作を含むコードは合法には成り得ず、実行できるかもしれないが、結果は保証されない。(つまり違反
ttp://www.c-lang.org/detail/undefined_behavior.html
>未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。
>翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい(診断メッセージの発行を伴っても伴わなくてもよい。)。
>さらに(診断メッセージを出力し)翻訳又は実行を中断してもよい。
ここで、診断メッセージ云々とか「文書化された,環境に特有な方法で処理」とは安全に実行を止めることを意味する
Windowsでアプリのクラッシュ時に出てくるダイアログとか、コアダンプとかがそれにあたる
106デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 20:15:29.79ID:elB46Etj0 ていうか最初の疑問に戻るんですが、総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ただ外部リンケージの意味で省略可能だったり、
ANSI Cにおいては「仮定義」に関する仕様が追加されてるから話が複雑化したように見えているだけで、
ただ外部リンケージの意味で省略可能だったり、
ANSI Cにおいては「仮定義」に関する仕様が追加されてるから話が複雑化したように見えているだけで、
107デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 20:16:15.29ID:djBIOydUr >下記の通り、未定義動作を含むコードは合法には成り得ず
何というか、「下記」のどこを縦読みするとそうなるんだか
何というか、「下記」のどこを縦読みするとそうなるんだか
108デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
2017/04/09(日) 20:18:42.95ID:9WDYOgp70 >>106
追加じゃなく追認な
追加じゃなく追認な
109デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 20:19:44.66ID:elB46Etj0110デフォルトの名無しさん (ワッチョイ cf59-dxaC)
2017/04/09(日) 20:34:41.52ID:elB46Etj0 >>108
互いに正しく適合する「宣言」と「定義」からなるプログラムにとって「仮定義」の概念は不要なのだから、
この場合何を追認したかというと既存のソースコードにおける「extern」の誤用を追認したとしか考えられないのでは…
つまり言語規格の既存の条項が「追認」されたわけではなく、あくまで条項が「追加」されたんである
(多分「追認」なんて定義もされていないだろうし、
互いに正しく適合する「宣言」と「定義」からなるプログラムにとって「仮定義」の概念は不要なのだから、
この場合何を追認したかというと既存のソースコードにおける「extern」の誤用を追認したとしか考えられないのでは…
つまり言語規格の既存の条項が「追認」されたわけではなく、あくまで条項が「追加」されたんである
(多分「追認」なんて定義もされていないだろうし、
111デフォルトの名無しさん (ワッチョイ 722b-Crua)
2017/04/09(日) 20:52:23.27ID:k8qrPdcw0 >>106
> 総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ちょっと端折り過ぎかな
n3797(C++14) 7.1.1 Storage class specifiers Example:
static int b; // b has internal linkage
extern int b; // b still has internal linkage
> 総合すると、CでもC++でも「extern」 = 「外部リンケージ」、でおkなのでは…
ちょっと端折り過ぎかな
n3797(C++14) 7.1.1 Storage class specifiers Example:
static int b; // b has internal linkage
extern int b; // b still has internal linkage
112デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
2017/04/09(日) 21:03:07.96ID:9WDYOgp70113デフォルトの名無しさん (ワッチョイ f6bc-+TA9)
2017/04/09(日) 21:04:18.72ID:9WDYOgp70 今となっては忸怩たる思いだが
俺は「追認された」張本人の1人であって
俺は「追認された」張本人の1人であって
114デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 21:32:38.73ID:djBIOydUr115デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 21:52:43.91ID:djBIOydUr116デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/09(日) 22:01:05.39ID:djBIOydUr >103
そのサイトのANSI Cの説明は多分ウソだぞ
同じ内容なはずのISO Cはそんな定義じゃないから
そのサイトのANSI Cの説明は多分ウソだぞ
同じ内容なはずのISO Cはそんな定義じゃないから
117デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/10(月) 14:43:46.26ID:DheowmrF0 おまえら規格票くらい買うか、せめてドラフトくらい用意しろや
External object definitions
Semantics
If the declaration of an identifier for an object has file scope and an initializer,
the declaration is an external definition for the identifier.
A declaration of an identifier for an object that has file scope without an initializer,
and without a storage-class specifier or with the storage-class specifier static,
constitutes a tentative definition. If a translation unit contains one or
more tentative definitions for an identifier, and the translation unit contains
no external definition for that identifier, then the behavior is exactly as
if the translation unit contains a file scope declaration of that identifier,
with the composite type as of the end of the translation unit, with an initializer equal to 0.
If the declaration of an identifier for an object is a tentative definition and
has internal linkage, the declared type shall not be an incomplete type.
今どき「ANSI C」とか言っちゃってるサイトは眉に唾してかかれ
External object definitions
Semantics
If the declaration of an identifier for an object has file scope and an initializer,
the declaration is an external definition for the identifier.
A declaration of an identifier for an object that has file scope without an initializer,
and without a storage-class specifier or with the storage-class specifier static,
constitutes a tentative definition. If a translation unit contains one or
more tentative definitions for an identifier, and the translation unit contains
no external definition for that identifier, then the behavior is exactly as
if the translation unit contains a file scope declaration of that identifier,
with the composite type as of the end of the translation unit, with an initializer equal to 0.
If the declaration of an identifier for an object is a tentative definition and
has internal linkage, the declared type shall not be an incomplete type.
今どき「ANSI C」とか言っちゃってるサイトは眉に唾してかかれ
118デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/10(月) 14:44:01.60ID:DheowmrF0 EXAMPLE 1
int i1 = 1; // definition, external linkage
static int i2 = 2; // definition, internal linkage extern
int i3 = 3; // definition, external linkage
int i4; // tentative definition, external linkage
static int i5; // tentative definition, internal linkage
int i1; // valid tentative definition, refers to previous
int i2; // 6.2.2 renders undefined, linkage disagreement
int i3; // valid tentative definition, refers to previous
int i4; // valid tentative definition, refers to previous
int i5; // 6.2.2 renders undefined, linkage disagreement
extern int i1; // refers to pre vious, whose linkage is external
extern int i2; // refers to pre vious, whose linkage is internal
extern int i3; // refers to pre vious, whose linkage is external
extern int i4; // refers to pre vious, whose linkage is external
extern int i5; // refers to pre vious, whose linkage is internal
EXAMPLE 2
If at the end of the translation unit containing
int i[];
the array i still has incomplete type, the implicit initializer causes it to have one element,
which is set to zero on program startup.
int i1 = 1; // definition, external linkage
static int i2 = 2; // definition, internal linkage extern
int i3 = 3; // definition, external linkage
int i4; // tentative definition, external linkage
static int i5; // tentative definition, internal linkage
int i1; // valid tentative definition, refers to previous
int i2; // 6.2.2 renders undefined, linkage disagreement
int i3; // valid tentative definition, refers to previous
int i4; // valid tentative definition, refers to previous
int i5; // 6.2.2 renders undefined, linkage disagreement
extern int i1; // refers to pre vious, whose linkage is external
extern int i2; // refers to pre vious, whose linkage is internal
extern int i3; // refers to pre vious, whose linkage is external
extern int i4; // refers to pre vious, whose linkage is external
extern int i5; // refers to pre vious, whose linkage is internal
EXAMPLE 2
If at the end of the translation unit containing
int i[];
the array i still has incomplete type, the implicit initializer causes it to have one element,
which is set to zero on program startup.
119デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/10(月) 14:44:21.17ID:DheowmrF0 6.9.2 外部オブジェクト定義
意味規則 オブジェクトの識別子の宣言がファイル有効範囲及び初期化子をもつ場合,その宣言を識別子の外部定義という。
ファイル有効範囲のオブジェクトの識別子を,初期化子を使わず,かつ,記憶域クラス指定子なしか又は記憶域クラス指定子static で宣言する場合,そのオブジェクトの識別子の宣言を仮定義(tentativedefinition)という。
翻訳単位が,ある識別子に対する仮定義を一つ以上含み,かつその識別子に対する外部定義を含まない場合,その翻訳単位に,翻訳単位の終わりの時点での合成型,及び0 に等しい初期化子をもったその識別子のファイル有効範囲の宣言がある場合と同じ規則で動作する。
オブジェクトに対する識別子の宣言が仮定義であり,内部結合をもつ場合,その宣言の型は不完全型であってはならない。
意味規則 オブジェクトの識別子の宣言がファイル有効範囲及び初期化子をもつ場合,その宣言を識別子の外部定義という。
ファイル有効範囲のオブジェクトの識別子を,初期化子を使わず,かつ,記憶域クラス指定子なしか又は記憶域クラス指定子static で宣言する場合,そのオブジェクトの識別子の宣言を仮定義(tentativedefinition)という。
翻訳単位が,ある識別子に対する仮定義を一つ以上含み,かつその識別子に対する外部定義を含まない場合,その翻訳単位に,翻訳単位の終わりの時点での合成型,及び0 に等しい初期化子をもったその識別子のファイル有効範囲の宣言がある場合と同じ規則で動作する。
オブジェクトに対する識別子の宣言が仮定義であり,内部結合をもつ場合,その宣言の型は不完全型であってはならない。
120デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/10(月) 14:45:14.16ID:DheowmrF0 例1.
int i1 = 1; // 定義,外部結合
static int i2 = 2; // 定義,内部結合
extern int i3 = 3; // 定義,外部結合
int i4; // 仮定義,外部結合
static int i5; // 仮定義,内部結合
int i1; // 正しい仮定義,前の定義を参照する
int i2; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
int i3; // 正しい仮定義,前の定義を参照する
int i4; // 正しい仮定義,前の定義を参照する
int i5; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
extern int i1; // 外部結合をもつ前の定義を参照する
extern int i2; // 内部結合をもつ前の定義を参照する
extern int i3; // 外部結合をもつ前の定義を参照する
extern int i4; // 外部結合をもつ前の定義を参照する
extern int i5; // 内部結合をもつ前の定義を参照する
例2. 翻訳単位が
int i[];
を含み,その翻訳単位の最後で,配列i が依然として不完全型をもつ場合,配列i は暗黙の初期化子によって一つの要素をもつようにされる。その要素にはプログラム開始時に0 がセットされる。
int i1 = 1; // 定義,外部結合
static int i2 = 2; // 定義,内部結合
extern int i3 = 3; // 定義,外部結合
int i4; // 仮定義,外部結合
static int i5; // 仮定義,内部結合
int i1; // 正しい仮定義,前の定義を参照する
int i2; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
int i3; // 正しい仮定義,前の定義を参照する
int i4; // 正しい仮定義,前の定義を参照する
int i5; // 前に内部結合をもつ定義があるため,結合の不一致が生じ,6.2.2 によって動作は未定義となる
extern int i1; // 外部結合をもつ前の定義を参照する
extern int i2; // 内部結合をもつ前の定義を参照する
extern int i3; // 外部結合をもつ前の定義を参照する
extern int i4; // 外部結合をもつ前の定義を参照する
extern int i5; // 内部結合をもつ前の定義を参照する
例2. 翻訳単位が
int i[];
を含み,その翻訳単位の最後で,配列i が依然として不完全型をもつ場合,配列i は暗黙の初期化子によって一つの要素をもつようにされる。その要素にはプログラム開始時に0 がセットされる。
121デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/10(月) 18:45:17.26ID:srG0I8DXr N1570のリンクを貼ったら、真実を知った>>100が傷ついちゃうかも知れないと思って遠慮してた
122デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/10(月) 23:59:41.82ID:srG0I8DXr とりあえずC++のリンケージ仕様でも投下しとくか
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/
ここのN4660(C++17 DIS)の6.5節の段落3〜4あたりだな
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2017/
ここのN4660(C++17 DIS)の6.5節の段落3〜4あたりだな
123デフォルトの名無しさん (ワッチョイ 138f-+TA9)
2017/04/11(火) 15:06:41.62ID:xAQ0kPvC0 パスいるやん
124デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/11(火) 17:53:37.33ID:gmpvjUS3r まじか
じゃあ同じ内容のN4659で
じゃあ同じ内容のN4659で
126デフォルトの名無しさん (オッペケ Sr57-GJ90)
2017/04/12(水) 22:52:37.49ID:hzellBg9r127デフォルトの名無しさん (ワッチョイ db57-EaKP)
2017/04/13(木) 12:41:59.49ID:NIQ3hjXd0 んだね
128デフォルトの名無しさん (ワッチョイ eb00-AM0K)
2017/04/13(木) 17:14:46.56ID:IqLxmvNO0 moduleが標準入りするのはいつごろよ?ついでにD言語のversionとaliasもパクって完全体になってほしいね
129デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/13(木) 18:41:48.04ID:RdwWAERL0 それよりネットワーク関連を標準化しろ
この際asioでも許容
この際asioでも許容
130デフォルトの名無しさん (ワッチョイ 3b32-Lcy7)
2017/04/13(木) 21:28:48.50ID:n9EAyVre0 asioとhttp系の何かつけてくれ
131デフォルトの名無しさん (ワッチョイ eb86-HE/W)
2017/04/15(土) 11:47:11.44ID:BNJEkz/Q0132デフォルトの名無しさん (ササクッテロル Sp6f-cQmk)
2017/04/15(土) 11:52:21.06ID:0ry10bQQp 標準で入ってることが重要なんじゃないかなあ…
133デフォルトの名無しさん (ワッチョイ 1f6b-HE/W)
2017/04/15(土) 11:56:11.76ID:JwQS3cI30 炊飯器用の小さいネットワークライブラリも必要になるんじゃねえの
134デフォルトの名無しさん (ワッチョイ 0f1f-V7Gz)
2017/04/15(土) 12:21:35.22ID:QXvRHshA0 漁師さん用も頼む
135デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/15(土) 14:16:17.69ID:/RNhb41k0 外部ライブラリっていうだけでハードル高くなるからな
仕事で使いづらいのはもちろんとしてOSSでも使用者に各ライブラリを掻き集めてもらわないといけなくなるから最小限にしたい
仕事で使いづらいのはもちろんとしてOSSでも使用者に各ライブラリを掻き集めてもらわないといけなくなるから最小限にしたい
136デフォルトの名無しさん (ワッチョイ 1fb2-EaKP)
2017/04/15(土) 21:37:48.57ID:53BEnEdf0 論理積で空集合になったからといって
じゃあ論理和にしろと? 頭悪すぎだろ
じゃあ論理和にしろと? 頭悪すぎだろ
137デフォルトの名無しさん (ワッチョイ eb59-0/8P)
2017/04/15(土) 22:25:04.54ID:D67U9VSC0 静的型付け言語でオブジェクト指向すると
基底クラスにメソッドが集まっていく…
基底クラスにメソッドが集まっていく…
138デフォルトの名無しさん (ワッチョイ efa6-HE/W)
2017/04/15(土) 22:33:53.11ID:uwyLFIA10 それはよくない兆候だよね
139デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/15(土) 23:01:12.27ID:/RNhb41k0 何故テンプレートを使わないのか
140デフォルトの名無しさん (ワッチョイ eb59-0/8P)
2017/04/16(日) 01:51:56.03ID:M1nx5OGg0 基底クラスにメソッドが集まっていくのは仕方が無いにしても、
公開する相手別にインターフェースを分けて抽象クラスの多重継承でもしておけば
大きな混乱は避けられる
希ガス
公開する相手別にインターフェースを分けて抽象クラスの多重継承でもしておけば
大きな混乱は避けられる
希ガス
141デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/16(日) 03:21:47.75ID:9vBuyRLK0 仕方ないか?
そういう場合大抵は派生先のあのクラスとあのクラスでこれ使うから基底にいれとこうみたいになってis aじゃなくなってる気がする
そういう場合大抵は派生先のあのクラスとあのクラスでこれ使うから基底にいれとこうみたいになってis aじゃなくなってる気がする
142デフォルトの名無しさん (ワッチョイ 3b0d-T+tu)
2017/04/16(日) 10:05:38.55ID:P5/zt8YK0 俺も>>141に一票かな。
基底クラスに集まって来るような関数群は、共通に使うという一点に於いてのみ意味があることが多いんだよね。
と、すると、大抵別クラスとして分離可能になるってケースが多い気が。
つまり、実はhas-aが妥当で、それどころかUMLで言うところの依存関係だけで問題ない事が多いという。
基底クラスに集まって来るような関数群は、共通に使うという一点に於いてのみ意味があることが多いんだよね。
と、すると、大抵別クラスとして分離可能になるってケースが多い気が。
つまり、実はhas-aが妥当で、それどころかUMLで言うところの依存関係だけで問題ない事が多いという。
143デフォルトの名無しさん (ワッチョイ bbf4-aC3X)
2017/04/16(日) 13:02:22.02ID:FhXvPItE0 dynamic_castは悪という間違った考え方が基底に余計なメンバ関数を実装させる原因
144デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/16(日) 13:15:07.28ID:cLuVKvb50 dynamic_castが悪いのではなくdynamic_cast使いまくるようなら設計に問題があるのではないかという話なのでは
145デフォルトの名無しさん (ワッチョイ 4b3c-yJ/5)
2017/04/16(日) 14:09:06.37ID:1LAAxzhm0 おっと、Javaを悪く言うのはそこまでだ
146デフォルトの名無しさん (オッペケ Sr6f-xkGs)
2017/04/16(日) 14:12:39.55ID:kL6yOSUfr 144がアスペなのは間違い無い
147デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/16(日) 14:49:30.10ID:9vBuyRLK0 144を理解出来ない146が…
148デフォルトの名無しさん (ワッチョイ eb59-0/8P)
2017/04/16(日) 14:53:55.66ID:M1nx5OGg0 知らね
ゼロから設計するならともかく、すでに出来上がった構造に仕様追加がなされた場合、
基底クラスにメソッドを追加する流れになりがち
かつdynamic_castはある意味オブジェクト指向的解決手段と言えるかもしれないが、
静的型付けという枠組み(>137)から逸脱する
ゼロから設計するならともかく、すでに出来上がった構造に仕様追加がなされた場合、
基底クラスにメソッドを追加する流れになりがち
かつdynamic_castはある意味オブジェクト指向的解決手段と言えるかもしれないが、
静的型付けという枠組み(>137)から逸脱する
149デフォルトの名無しさん (ワッチョイ 1fcc-35Q+)
2017/04/16(日) 15:31:42.38ID:Jwa8aGsr0 dynamic_cast と reinterpret_cast が本来の意味と逆だよな
150デフォルトの名無しさん (ワッチョイ bbf4-aC3X)
2017/04/16(日) 22:20:05.54ID:FhXvPItE0 複数インターフェース継承してdynamic_castすればいいところを、基底で取り敢えず全インターフェース重ねてなにもしない実装を定義するみたいなことが多すぎる。
151デフォルトの名無しさん (オッペケ Sr6f-xkGs)
2017/04/16(日) 22:47:27.74ID:kL6yOSUfr >dynamic_cast と reinterpret_cast が本来の意味と逆だよな
訳:ボクは言語障害です
訳:ボクは言語障害です
152デフォルトの名無しさん (ワッチョイ 9f78-T+tu)
2017/04/17(月) 02:47:11.79ID:/ZxvtgP60 >>150
いや、それもなんかおかしいだろ。
いや、それもなんかおかしいだろ。
153デフォルトの名無しさん (ワッチョイ 6b3c-cQmk)
2017/04/17(月) 03:21:23.30ID:GWeDXk7n0 抽象から具体へのキャストって何かもやもやする
SOLID原則のDIPに反するんじゃないかって気もするし
SOLID原則のDIPに反するんじゃないかって気もするし
154デフォルトの名無しさん (ワッチョイ eb92-D+C1)
2017/04/17(月) 07:06:11.59ID:D/VW2xRY0 昔風の継承モデルは最近使わなくなったなあ
テンプレートの方が融通性高い
テンプレートの方が融通性高い
155デフォルトの名無しさん (ワッチョイ 1fcc-35Q+)
2017/04/17(月) 07:43:02.51ID:H8Au7WAd0 は?バカじゃねぇの
156デフォルトの名無しさん (ワッチョイ 9fc3-hp0W)
2017/04/17(月) 07:48:02.60ID:4nIA4vL50 はい
157デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/17(月) 08:36:25.34ID:R62eo4r30 dynamic_castするよりはそいつが該当するinterfaceを持ってるか確認するほうがマシだと思う
struct scroll_interface{
virtual bool down(float value)=0;
virtual bool up(float value)=0;
};
struct view{
virtual scroll_interface* scrollable(){return 0;}
};
struct list_view : view{
virtual scroll_interface* scrollable(){return ptr;}
};
if(auto sc = view->scrollable()){
sc->down(1);
}
みたいな感じ
struct scroll_interface{
virtual bool down(float value)=0;
virtual bool up(float value)=0;
};
struct view{
virtual scroll_interface* scrollable(){return 0;}
};
struct list_view : view{
virtual scroll_interface* scrollable(){return ptr;}
};
if(auto sc = view->scrollable()){
sc->down(1);
}
みたいな感じ
158デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/17(月) 08:50:40.08ID:bqYXNS3A0 非メンバ関数にできるものはvariant使った方がいいなって感じになってきた
159デフォルトの名無しさん (スップ Sd3f-a7Ro)
2017/04/17(月) 08:54:59.22ID:OwDSFehNd >>157
なんかやだ
なんかやだ
160デフォルトの名無しさん (ワッチョイ 3b37-T+tu)
2017/04/17(月) 08:55:54.12ID:5RBrgFiu0161デフォルトの名無しさん (スプッッ Sd3f-lyFy)
2017/04/17(月) 09:07:38.99ID:qMcNcEsbd RTTIはオプションで切っておきたい
162デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/17(月) 09:13:50.45ID:R62eo4r30 >>160
継承関係になくていいというところが違うし(結構大事だと思う)、dynamic_castはダイナミックリンクするライブラリと組み合わせると面倒くさいからなるべく使いたくないんだよね。
継承関係になくていいというところが違うし(結構大事だと思う)、dynamic_castはダイナミックリンクするライブラリと組み合わせると面倒くさいからなるべく使いたくないんだよね。
163デフォルトの名無しさん (スップ Sd3f-a7Ro)
2017/04/17(月) 10:32:14.53ID:OwDSFehNd 依存関係の強さは変わらんよね
164デフォルトの名無しさん (ワッチョイ 1f6b-HE/W)
2017/04/17(月) 12:22:18.70ID:PEkyQsSL0 その「強さ」を具体的に数値化できればな
165デフォルトの名無しさん (ワッチョイ 2bf4-EaKP)
2017/04/17(月) 14:44:09.70ID:YxhJnxLO0 >>157
スクロールできないクラスの中にscroll_interface*を返す関数があってnullptrを返すのか
その論法では絶対にあり得ない機能への問い合わせ関数を膨大な数抱え込むここになるぞ
スクロールできないクラスの中にscroll_interface*を返す関数があってnullptrを返すのか
その論法では絶対にあり得ない機能への問い合わせ関数を膨大な数抱え込むここになるぞ
166デフォルトの名無しさん (ワッチョイ 2bf4-EaKP)
2017/04/17(月) 14:46:29.60ID:YxhJnxLO0167デフォルトの名無しさん (スップ Sd3f-a7Ro)
2017/04/17(月) 16:34:39.13ID:OwDSFehNd QueryInterfaceいやだ
168デフォルトの名無しさん (ワッチョイ eb00-AM0K)
2017/04/17(月) 16:58:00.17ID:rD3LHvJv0 COM設計したやつって基地外だよな
169デフォルトの名無しさん (ワッチョイ 2bf4-EaKP)
2017/04/17(月) 18:04:25.63ID:YxhJnxLO0 APIが単一空間に際限なく増えることへの危機感から
何らか対策を講じるとして、割とまともな答えだと思う
何らか対策を講じるとして、割とまともな答えだと思う
170デフォルトの名無しさん (ワッチョイ 2bf4-EaKP)
2017/04/17(月) 18:05:14.09ID:YxhJnxLO0 GUIDの扱い方が変態的なのがちょっとイヤだけどね
171デフォルトの名無しさん (ワッチョイ eb59-0/8P)
2017/04/17(月) 22:27:32.59ID:ZfEceRxS0 やっぱこれからはAPIが呼び出し元のコードを生成すべき
172デフォルトの名無しさん (ブーイモ MMaf-YOru)
2017/04/17(月) 22:40:09.29ID:KscfyyhaM 呼び出し元のコードは誰が呼び出すんだ
173片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd3f-L+dC)
2017/04/17(月) 22:43:06.49ID:dVaQYL/0d オバマ元大統領が電話で呼び出してくれるだろう。
174デフォルトの名無しさん (ワッチョイ 6b3c-cQmk)
2017/04/18(火) 00:19:12.10ID:3dyURfCV0 そうなんだ、すごいね
175デフォルトの名無しさん (ワッチョイ 1fcc-35Q+)
2017/04/18(火) 04:24:36.93ID:sGHQhIiJ0 _人人人人人人人人人人人人人人人_
> そうなんだ、すごいね! <
´ ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
__、、=--、、 __
/ ・ ゙! /・ `ヽ
| ・ __,ノ (_ ・ |
ヽ、 (三,、, _) /
/ー-=-i'' (____,,,.ノ
|__,,/ |__ゝ
〉 ) ( )
> そうなんだ、すごいね! <
´ ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
__、、=--、、 __
/ ・ ゙! /・ `ヽ
| ・ __,ノ (_ ・ |
ヽ、 (三,、, _) /
/ー-=-i'' (____,,,.ノ
|__,,/ |__ゝ
〉 ) ( )
176デフォルトの名無しさん (ワッチョイ db65-EaKP)
2017/04/18(火) 14:33:19.90ID:opmIphTi0 >>171
APIが関数ではなくテンプレートであるべきということか?
APIが関数ではなくテンプレートであるべきということか?
177ich1 (アウアウオー Sabf-d3ae)
2017/04/18(火) 14:56:55.08ID:ZJShoz7Oa https://goo.gl/Y4tSAe
これは嘘でしょ?本当?
これは嘘でしょ?本当?
178デフォルトの名無しさん (ワッチョイ db65-EaKP)
2017/04/18(火) 15:43:43.41ID:opmIphTi0 >>177
スレ違い「生理前の肌荒れナントカ」
スレ違い「生理前の肌荒れナントカ」
179デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 00:24:26.42ID:37YtuUfA0 テンプレートに演算子を与えたいのだけど、マクロでやらないとダメよね?
maxとかminとか。
走査するところは共通で、> か < かが違うだけなのだけど。
maxとかminとか。
走査するところは共通で、> か < かが違うだけなのだけど。
180デフォルトの名無しさん (ササクッテロレ Sp6f-cQmk)
2017/04/19(水) 00:50:34.43ID:5KqdfKh3p 比較用のファンクタをテンプレートパラメータにすれば良いだけじゃないの
STLのmapみたいな感じで
STLのmapみたいな感じで
181デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 01:36:15.55ID:37YtuUfA0182デフォルトの名無しさん (ワッチョイ efa6-HE/W)
2017/04/19(水) 06:48:25.24ID:1gRwKhTB0 よく話が通じるな
183デフォルトの名無しさん (ワッチョイ 1fcc-35Q+)
2017/04/19(水) 07:02:34.69ID:pPK7kNhi0 トーシローの考えることなど手に取るように解るだろ
184デフォルトの名無しさん (ワッチョイ 9fc3-hp0W)
2017/04/19(水) 07:45:25.15ID:CHQbSNlI0 ファンクタってなに?
185デフォルトの名無しさん (ワッチョイ 2b51-EaKP)
2017/04/19(水) 07:58:24.39ID:NVOSG7Tn0 メンバoperator()を持つクラスのインスタンス
186デフォルトの名無しさん (オッペケ Sr6f-xkGs)
2017/04/19(水) 08:01:07.84ID:2ep/ROmVr というのが185の妄想
187デフォルトの名無しさん (ドコグロ MMbf-RLAq)
2017/04/19(水) 08:10:11.76ID:CJSzniGcM >>181
なぜ試さない?
なぜ試さない?
188デフォルトの名無しさん (ワッチョイ 2b51-EaKP)
2017/04/19(水) 08:29:27.36ID:NVOSG7Tn0 という妄想を朝から垂れ流す186
189デフォルトの名無しさん (ワッチョイ 0b6a-T+tu)
2017/04/19(水) 09:06:44.93ID:oJjBFOoS0 >>181
templateとファンクタはインライン展開がかなり期待できる手法。
templateとファンクタはインライン展開がかなり期待できる手法。
190デフォルトの名無しさん (ワッチョイ 1f72-8aNn)
2017/04/19(水) 10:21:17.52ID:TnomPWtQ0 #include "A.h"
と
class A;
の違いって何でしょうか?
どのように使い分けるのですか?
と
class A;
の違いって何でしょうか?
どのように使い分けるのですか?
191デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 10:26:39.57ID:37YtuUfA0 >>187,189
確かに以前違うところで思いっきりインラインされているのを見たから、
実際にはされるのだろうね。
ただ、C++のそういった方向への進化はちょっと嫌いだね。
今現在マクロで書いてるからテンプレートが改行無しのコードになってる。
使い勝手は悪いけど、確実に動くし、インラインだ。
俺の要求としては「テンプレートに演算子を書かせてくれ」これだけだ。
さてC++は何故かこれができない。
とは言え珍しいケースでもないはずだから、実際にはやり方があるはず。
そして聞いてみると、型を作る為にファンクタを作って差し込めばいいと言う。
わざわざ型を作ってコンパイラがインライン化するのを期待しろ?
そりゃ動作だけなら同じだが、ソースが余計に見にくくなる。
今の改行無しのコードと、どっちがマシかと言えば、min/max位なら前者だよ。
だからこれなら今回は見送りだ。
とは言え、巨大なテンプレートになってブレークポインタがないと辛い状況になると、
これまではコピペしてデバッグして上書き、というのをやってた。
これは無駄だなあと思っていたので、
とにかくやり方があるのを教えてもらったのはありがたい。
ただ、この解を一般的に受け付けるC++のコミュニティのノリは俺はちょっと嫌い。
重ねて言うが、普通に演算子書かせてくれよ、と思う。
確かに以前違うところで思いっきりインラインされているのを見たから、
実際にはされるのだろうね。
ただ、C++のそういった方向への進化はちょっと嫌いだね。
今現在マクロで書いてるからテンプレートが改行無しのコードになってる。
使い勝手は悪いけど、確実に動くし、インラインだ。
俺の要求としては「テンプレートに演算子を書かせてくれ」これだけだ。
さてC++は何故かこれができない。
とは言え珍しいケースでもないはずだから、実際にはやり方があるはず。
そして聞いてみると、型を作る為にファンクタを作って差し込めばいいと言う。
わざわざ型を作ってコンパイラがインライン化するのを期待しろ?
そりゃ動作だけなら同じだが、ソースが余計に見にくくなる。
今の改行無しのコードと、どっちがマシかと言えば、min/max位なら前者だよ。
だからこれなら今回は見送りだ。
とは言え、巨大なテンプレートになってブレークポインタがないと辛い状況になると、
これまではコピペしてデバッグして上書き、というのをやってた。
これは無駄だなあと思っていたので、
とにかくやり方があるのを教えてもらったのはありがたい。
ただ、この解を一般的に受け付けるC++のコミュニティのノリは俺はちょっと嫌い。
重ねて言うが、普通に演算子書かせてくれよ、と思う。
192デフォルトの名無しさん (スプッッ Sd3f-lyFy)
2017/04/19(水) 10:30:32.85ID:cmg5eKJnd マクロなんてアホみたいな機能使ってる奴がいまだにいたとは
193デフォルトの名無しさん (スップ Sd3f-a7Ro)
2017/04/19(水) 10:38:16.72ID:xWugx3VWd ああ、std::plus とかラムダ式じゃなくて + を指定したいって意味か
194デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 11:18:27.22ID:37YtuUfA0 おー、そういうのがあるんだね。
なるほどそれなら std::rel_ops::operator> を使うべきなのかな?
これが標準なら慣れるしかないけど、何だかなー。
呼び出し時に somefunc<double,std::rel_ops::operator>>
だとminなのかmaxなのか分からない。
今は関数名もsome_max, some_minとかに出来てるんだよね。
なるほどそれなら std::rel_ops::operator> を使うべきなのかな?
これが標準なら慣れるしかないけど、何だかなー。
呼び出し時に somefunc<double,std::rel_ops::operator>>
だとminなのかmaxなのか分からない。
今は関数名もsome_max, some_minとかに出来てるんだよね。
195デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 11:29:39.03ID:37YtuUfA0 ちなみに現状はこんなコード
#define FUNC(fname,op) \
template<class T> static T fname(T* ptr, int num){\
T max = *ptr;\
int idx = 1;\
while (idx<num) {\
if (max op ptr[idx]) max = ptr[idx];\
idx++;\
}\
return max;\
}
FUNC(max,<)
FUNC(min,>)
#undef FUNC
#define FUNC(fname,op) \
template<class T> static T fname(T* ptr, int num){\
T max = *ptr;\
int idx = 1;\
while (idx<num) {\
if (max op ptr[idx]) max = ptr[idx];\
idx++;\
}\
return max;\
}
FUNC(max,<)
FUNC(min,>)
#undef FUNC
196デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 12:34:12.22ID:q88wQIwA0 std::max_element
お前どこかのスレでbindが遅いとか、質問に答えた相手をアホ呼ばわりしたやつじゃね?
お前どこかのスレでbindが遅いとか、質問に答えた相手をアホ呼ばわりしたやつじゃね?
197デフォルトの名無しさん (ドコグロ MMbf-RLAq)
2017/04/19(水) 12:41:12.49ID:CJSzniGcM198デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 12:46:19.25ID:37YtuUfA0199デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 12:50:36.22ID:37YtuUfA0 ちなみにマクロは糞だと思うぞ。
単純置換くらいならいいが、それ以上は訳が分からなくなる。
ただ、演算子を置換したい為にファンクタにしてテンプレートに突っ込むのも同様に糞だと思うぞ。
見て分かりやすいものではないだろ。
単純置換くらいならいいが、それ以上は訳が分からなくなる。
ただ、演算子を置換したい為にファンクタにしてテンプレートに突っ込むのも同様に糞だと思うぞ。
見て分かりやすいものではないだろ。
200デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 13:00:01.75ID:q88wQIwA0201デフォルトの名無しさん (ワッチョイ ef14-AM0K)
2017/04/19(水) 13:04:45.97ID:Z8YDH0nj0 struct Maxf{
template <typename T>static const T f(const T& a, const T& b){return a>b?a:b;}
};
struct Minf{
template <typename T>static const T f(const T& a, const T& b){return a<b?a:b;}
};
template<class M,typename T >struct Func
{
static const T f(const T* p, int n)
{
T m = p[0];
for(int i = 1 ; i < n ; i++){ m = M::f(m,p[i]);}
return m;
}
};
double a[]={-2,3.14,2.2369,0.};
double maxv = Func<Maxf>::f(a, sizeof(a)/sizeof(a[0]) );
書いといてなんだが、見やすい見にくいの問題なら個人の感想なので好きなようにどうぞとしか
template <typename T>static const T f(const T& a, const T& b){return a>b?a:b;}
};
struct Minf{
template <typename T>static const T f(const T& a, const T& b){return a<b?a:b;}
};
template<class M,typename T >struct Func
{
static const T f(const T* p, int n)
{
T m = p[0];
for(int i = 1 ; i < n ; i++){ m = M::f(m,p[i]);}
return m;
}
};
double a[]={-2,3.14,2.2369,0.};
double maxv = Func<Maxf>::f(a, sizeof(a)/sizeof(a[0]) );
書いといてなんだが、見やすい見にくいの問題なら個人の感想なので好きなようにどうぞとしか
202デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 13:19:37.56ID:37YtuUfA0 >>201
ああなるほど、サンクス。そうすれば外側に名前が見えるのね。
個人的にはちょっと技巧的すぎて嫌いなコードだが、
正直なところ、コピペしてデバッグしてコピペで戻すのもうんざりしてたので、
徐々に慣らしながら使わせてもらうことにするよ。
C++での割と標準的な解決法ってこれなんだよね?
みんながやってるのなら俺も慣れるしかない。
ああなるほど、サンクス。そうすれば外側に名前が見えるのね。
個人的にはちょっと技巧的すぎて嫌いなコードだが、
正直なところ、コピペしてデバッグしてコピペで戻すのもうんざりしてたので、
徐々に慣らしながら使わせてもらうことにするよ。
C++での割と標準的な解決法ってこれなんだよね?
みんながやってるのなら俺も慣れるしかない。
203デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 13:32:04.24ID:q88wQIwA0 >>202
>>201 はまったく標準的ではない。
そんな書き方させる標準ライブラリが一つでもあるか?
http://ideone.com/DLaG5f
これだけの話(わざとmin_elementは使わずに書いてる)
std::max_elementと関数名は勝手に置き換えろ
>>201 はまったく標準的ではない。
そんな書き方させる標準ライブラリが一つでもあるか?
http://ideone.com/DLaG5f
これだけの話(わざとmin_elementは使わずに書いてる)
std::max_elementと関数名は勝手に置き換えろ
204デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 14:06:14.80ID:37YtuUfA0 >>203
いやだからイテレータが欲しいんじゃないんだよ。
それって話が余計に膨らんじゃうだろ。
今既に走査するコードはあって、それをテンプレートで置き換えようとしている。
呼んだら結果が返ってくる、それだけの関数なんだよ。
そのマクロを撲滅しようとしている。
イテレータだと外側コンテナに色々付け足しが必要になる。
それをやりたい訳じゃない。
最初から全て標準コンテナを使え、というのならその通りだが、それは別件だ。
今は生配列なんだよ。
とりあえず「型」としてファンクタなり構造体をテンプレートに渡し、
中でそれを使う、というのが一般的で良いんだよな?
それとは別に、走査する部分はイテレータで統一し、
std::max_element等にそれを呼ばせるというのも一つのやり方だよ。
ただこれは今やりたい話じゃない。
つか、イテレータイテレータ言ってるのはJavaだと思っていたが、
C++もイテレータ全盛の世界なのか?
いやだからイテレータが欲しいんじゃないんだよ。
それって話が余計に膨らんじゃうだろ。
今既に走査するコードはあって、それをテンプレートで置き換えようとしている。
呼んだら結果が返ってくる、それだけの関数なんだよ。
そのマクロを撲滅しようとしている。
イテレータだと外側コンテナに色々付け足しが必要になる。
それをやりたい訳じゃない。
最初から全て標準コンテナを使え、というのならその通りだが、それは別件だ。
今は生配列なんだよ。
とりあえず「型」としてファンクタなり構造体をテンプレートに渡し、
中でそれを使う、というのが一般的で良いんだよな?
それとは別に、走査する部分はイテレータで統一し、
std::max_element等にそれを呼ばせるというのも一つのやり方だよ。
ただこれは今やりたい話じゃない。
つか、イテレータイテレータ言ってるのはJavaだと思っていたが、
C++もイテレータ全盛の世界なのか?
205デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 14:19:56.81ID:q88wQIwA0 >>204
int a[8]={4,-2,4,56,7,8,5,3};
が生配列に見えないの?
const T* a,size_t s
が生ポインタと要素数って解らなかった?
C++どころかC言語すら解ってないんじゃないの?
お前の頭には応用という言葉が無いの?
http://ideone.com/i2h96y
int a[8]={4,-2,4,56,7,8,5,3};
が生配列に見えないの?
const T* a,size_t s
が生ポインタと要素数って解らなかった?
C++どころかC言語すら解ってないんじゃないの?
お前の頭には応用という言葉が無いの?
http://ideone.com/i2h96y
206デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 14:25:44.80ID:15mBJgd3M イテレータってお前の言ってる走査のシンタックスシュガーやぞ
207デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 14:36:42.93ID:37YtuUfA0208デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:00:45.80ID:37YtuUfA0 すまんが次の質問。
テンプレート内部で型を決めうちしたいのだが、この書き方ってある?
例えば内部で高精度で演算したい時、引数型が
引数double -> 内部double
引数float -> 内部double
引数short -> 内部int64
とか。引数型に対して内部型は確定的に決まる。
今は
template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){}
で引数型 T、内部型 Ti としてる。
ただ、これだといちいち呼び出し時に書かないといけない。
単発なのは我慢していたのだけど、リファクタを進めていくと、
上位関数が template<typename T> で済んでいるのに、内部関数が Ti を必要とするから
上位関数も template<typename T, typename Ti> となりだしてちょっとウザくなってきてる。
Ti を何とかして潰せれば呼び出し時にも書かなくて良くなり、全てすっきりするのだが。
テンプレート内部で型を決めうちしたいのだが、この書き方ってある?
例えば内部で高精度で演算したい時、引数型が
引数double -> 内部double
引数float -> 内部double
引数short -> 内部int64
とか。引数型に対して内部型は確定的に決まる。
今は
template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){}
で引数型 T、内部型 Ti としてる。
ただ、これだといちいち呼び出し時に書かないといけない。
単発なのは我慢していたのだけど、リファクタを進めていくと、
上位関数が template<typename T> で済んでいるのに、内部関数が Ti を必要とするから
上位関数も template<typename T, typename Ti> となりだしてちょっとウザくなってきてる。
Ti を何とかして潰せれば呼び出し時にも書かなくて良くなり、全てすっきりするのだが。
209デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:07:17.99ID:37YtuUfA0 すまん、ググったら条件分岐がヒットした。
というか2段重ねれば良いだけか?という気がしてきた。
あまり自信はないが。
というか2段重ねれば良いだけか?という気がしてきた。
あまり自信はないが。
210デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 16:15:43.91ID:15mBJgd3M type_traits使う
211デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:30:01.80ID:37YtuUfA0 >>210
> type_traits
見た目それようだが、何故かサイズが取れないのね。
ただどのみち俺の環境(VS2008)では使えないようだ。
とはいえ、今回の質問はどうやらラップすれば終わりのようだ。
お騒がせして申し訳ない。
> type_traits
見た目それようだが、何故かサイズが取れないのね。
ただどのみち俺の環境(VS2008)では使えないようだ。
とはいえ、今回の質問はどうやらラップすれば終わりのようだ。
お騒がせして申し訳ない。
212デフォルトの名無しさん (ワッチョイ 0b75-93S+)
2017/04/19(水) 16:39:33.18ID:q88wQIwA0 >>209
色々方法あるけど
*1 単純にオーバーロードを重ねる
template<typename T, typename Ti> double somefunc_impl(T* src0, T* src1, int t){}
double somefunc(float* src0, float* src1, int t){
return somefunc_impl<float,double>(src0,src1,t);
}
double somefunc(short* src0, short* src1, int t){
return somefunc_impl<short,int64 >(src0,src1,t);
}
double somefunc(double* src0, double* src1, int t){
return somefunc_impl<double,double>(src0,src1,t);
}
*2 trait (somefunc_internal_typeを定義していない型だけ渡すとコンパイルエラー)
template<typename T>struct somefunc_internal_type{};
template<>struct somefunc_internal_type<float>{ using type = double; };
template<>struct somefunc_internal_type<double>{ using type = double; };
template<>struct somefunc_internal_type<short>{ using type = int64_t; };
template<typename T, typename Ti = somefunc_internal_type<T>::type> double somefunc(T* src0, T* src1, int t){}
規則性があるならtraitsはenable_ifとかで少なく書けるが、深入りするとC++の闇にのまれるからおすすめしない
using type = double; を typedef double type; に変えたらたぶんVS2008でも使える
色々方法あるけど
*1 単純にオーバーロードを重ねる
template<typename T, typename Ti> double somefunc_impl(T* src0, T* src1, int t){}
double somefunc(float* src0, float* src1, int t){
return somefunc_impl<float,double>(src0,src1,t);
}
double somefunc(short* src0, short* src1, int t){
return somefunc_impl<short,int64 >(src0,src1,t);
}
double somefunc(double* src0, double* src1, int t){
return somefunc_impl<double,double>(src0,src1,t);
}
*2 trait (somefunc_internal_typeを定義していない型だけ渡すとコンパイルエラー)
template<typename T>struct somefunc_internal_type{};
template<>struct somefunc_internal_type<float>{ using type = double; };
template<>struct somefunc_internal_type<double>{ using type = double; };
template<>struct somefunc_internal_type<short>{ using type = int64_t; };
template<typename T, typename Ti = somefunc_internal_type<T>::type> double somefunc(T* src0, T* src1, int t){}
規則性があるならtraitsはenable_ifとかで少なく書けるが、深入りするとC++の闇にのまれるからおすすめしない
using type = double; を typedef double type; に変えたらたぶんVS2008でも使える
213デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 16:54:59.37ID:37YtuUfA0 >>212
ありがとう。まさに今その1をやったところ。
地味だがこれが一番分かりやすい。
ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな?
traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。
今回は精度最高型で演算するだけだから規則は簡単。
char, short, int -> int64
float, double -> double
だね。
ありがとう。まさに今その1をやったところ。
地味だがこれが一番分かりやすい。
ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな?
traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。
今回は精度最高型で演算するだけだから規則は簡単。
char, short, int -> int64
float, double -> double
だね。
214デフォルトの名無しさん (ワッチョイ 0f92-D+C1)
2017/04/19(水) 17:05:51.26ID:zKKKUYsP0215デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 19:31:59.93ID:suSDkWlT0 >>213
>コンパイラが最適化してくれることを期待するんだよな?
まず試せw
VCで逆アセンブル見るなり
https://gcc.godbolt.org/#
↑これで見るなり
厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
>コンパイラが最適化してくれることを期待するんだよな?
まず試せw
VCで逆アセンブル見るなり
https://gcc.godbolt.org/#
↑これで見るなり
厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
216デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 19:52:27.59ID:37YtuUfA0 >>215
まあそうなんだけど、今回については
・仮に遅くなったとしてもやる
・最終的にはアセンブラに差し替える
という、主に編集上の都合なのでどの道やるんだわ。
最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。
テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、
そんなもんだというのなら慣れるしかない。
ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。
varにしたら自動的にテンプレートになって、
文句がある場合のみ手動で特殊化が一番助かるんだが。
まあそうなんだけど、今回については
・仮に遅くなったとしてもやる
・最終的にはアセンブラに差し替える
という、主に編集上の都合なのでどの道やるんだわ。
最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。
テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、
そんなもんだというのなら慣れるしかない。
ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。
varにしたら自動的にテンプレートになって、
文句がある場合のみ手動で特殊化が一番助かるんだが。
217デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 21:04:11.42ID:15mBJgd3M218デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 21:47:13.23ID:37YtuUfA0 >>217
いやあれ属性でやろうとしてるでしょ。
普通に型名で書いた方が楽だよね。特殊化みたいに。
変に汎用化させようとして、余計に分かりにくくなってるよ。
なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。
テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。
努力の方向を間違えたら完全に空回りてしまう。
varで書かせてくれよとマジで思うよ。
いやあれ属性でやろうとしてるでしょ。
普通に型名で書いた方が楽だよね。特殊化みたいに。
変に汎用化させようとして、余計に分かりにくくなってるよ。
なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。
テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。
努力の方向を間違えたら完全に空回りてしまう。
varで書かせてくれよとマジで思うよ。
219デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 22:18:24.03ID:15mBJgd3M varと書けるようにするとなぜ新機能開発やバグ取りにできるの??
templateで何ができないと言ってるのかまじで意味わからん
templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ?
ランタイムのオーバーヘッドをなくすために使うんだよ普通は
てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス
高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
templateで何ができないと言ってるのかまじで意味わからん
templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ?
ランタイムのオーバーヘッドをなくすために使うんだよ普通は
てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス
高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
220デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 22:29:39.45ID:suSDkWlT0 >>218
言いたいことはわからんでもないけどな
他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん
ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw
言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし
そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが)
そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。
関数型言語みたいな記述力を求めてんのかね?
言いたいことはわからんでもないけどな
他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん
ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw
言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし
そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが)
そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。
関数型言語みたいな記述力を求めてんのかね?
221デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 22:39:24.29ID:37YtuUfA0 >>219
templateを使わずに同じ事を実現出来る環境なら、
その時間を新機能追加やバグ取りに使えるって事だよ。
実際、JavaScriptとかはそうなんだよ。
ただし、あっちには別の問題があるのだけどね。
templateを使わずに同じ事を実現出来る環境なら、
その時間を新機能追加やバグ取りに使えるって事だよ。
実際、JavaScriptとかはそうなんだよ。
ただし、あっちには別の問題があるのだけどね。
222デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 22:50:14.02ID:q88wQIwA0 でたJavascript
やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
223デフォルトの名無しさん (ワッチョイ bb1f-ZHy1)
2017/04/19(水) 22:52:18.87ID:1eYI3Ipd0 あーあいつか
あの時も意味不明なこといいまくってたな…
もうC++は諦めろ
あの時も意味不明なこといいまくってたな…
もうC++は諦めろ
224デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz)
2017/04/19(水) 22:54:45.80ID:suSDkWlT0 >やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か
これがマジなら
>ID:37YtuUfA0
マジで実測する癖つけた方がいいよ・・・・・w
速度に関して憶測でモノ言うのは話にならん・・・・
これがマジなら
>ID:37YtuUfA0
マジで実測する癖つけた方がいいよ・・・・・w
速度に関して憶測でモノ言うのは話にならん・・・・
225デフォルトの名無しさん (ササクッテロレ Sp6f-cQmk)
2017/04/19(水) 22:56:23.35ID:5KqdfKh3p 常軌を逸してる
触ってしまってすみませんでした
触ってしまってすみませんでした
226デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 22:57:53.67ID:37YtuUfA0 >>220
varは何でも突っ込める。(というより型がない)
理論的には、全ての変数を「別々に」テンプレート化しているのと同じ事になる。
だから、理論的にJavaScriptにはテンプレートが必要ない。
(あるけどあれはHTML生成用の別物であって、C++のテンプレートとは違う)
例えば、maxがあったとして、
C++:
double max (double x, double y){ return (x>y)? x : y;}
JavaScript
function max(x,y){ return (x>y)? x : y;}
なんだけど、これはC++的には
template <typename Tx, typename Ty, typename Tr> Tr max(Tx x, Ty y){ return (x>y)? x : y;}
と同じ意味になる。
こんなデタラメで良いのか?と思うけど、
実際、コードの大半はデタラメで良いから、
常に完全フルチューンマニュアル走行のC++はオーバースペックなんだよね。
手抜きで良いところはもっと手抜きしたい。
テンプレートは道路整備に近いから、ライブラリを作っている人はガンガン使うべきだけど、
それぞれの単独アプリで濫用すると空回り感が酷い。
とは言え、それを理由にデタラメにやってきたからいよいよ見にくくなってリファクタしてるんだけど。
ちなみに関数型(キリッの連中は多分勘違いしている。関数型が既述能力が特に高いわけではない。
というか、C++で出来ない既述は基本的にないと思う。
ただし、書きやすいかと言われれば、全く酷いけど、C++のコミュニティってかなり厨二で、
そういうのもC++の魅力だ!と言いきっている感がある。
いや勘弁してください、ってことで。
varは何でも突っ込める。(というより型がない)
理論的には、全ての変数を「別々に」テンプレート化しているのと同じ事になる。
だから、理論的にJavaScriptにはテンプレートが必要ない。
(あるけどあれはHTML生成用の別物であって、C++のテンプレートとは違う)
例えば、maxがあったとして、
C++:
double max (double x, double y){ return (x>y)? x : y;}
JavaScript
function max(x,y){ return (x>y)? x : y;}
なんだけど、これはC++的には
template <typename Tx, typename Ty, typename Tr> Tr max(Tx x, Ty y){ return (x>y)? x : y;}
と同じ意味になる。
こんなデタラメで良いのか?と思うけど、
実際、コードの大半はデタラメで良いから、
常に完全フルチューンマニュアル走行のC++はオーバースペックなんだよね。
手抜きで良いところはもっと手抜きしたい。
テンプレートは道路整備に近いから、ライブラリを作っている人はガンガン使うべきだけど、
それぞれの単独アプリで濫用すると空回り感が酷い。
とは言え、それを理由にデタラメにやってきたからいよいよ見にくくなってリファクタしてるんだけど。
ちなみに関数型(キリッの連中は多分勘違いしている。関数型が既述能力が特に高いわけではない。
というか、C++で出来ない既述は基本的にないと思う。
ただし、書きやすいかと言われれば、全く酷いけど、C++のコミュニティってかなり厨二で、
そういうのもC++の魅力だ!と言いきっている感がある。
いや勘弁してください、ってことで。
227デフォルトの名無しさん (ワッチョイ 6bc8-HE/W)
2017/04/19(水) 23:05:48.45ID:37YtuUfA0 >>224
コンパイラが最適化してくれるからいい、のではなくて、
コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。
ただしC++ではそれが出来ないが、
そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。
ここら辺はスタイルの違いだと思うよ。
コンパイラが最適化してくれるからいい、のではなくて、
コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。
ただしC++ではそれが出来ないが、
そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。
ここら辺はスタイルの違いだと思うよ。
228デフォルトの名無しさん (ワッチョイ 0b75-7bPG)
2017/04/19(水) 23:07:23.43ID:q88wQIwA0229デフォルトの名無しさん (ワッチョイ eb7a-3MbB)
2017/04/19(水) 23:11:15.73ID:cDK+jlin0 何故気に入らないのにC++を使おうとするんだ
RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
230デフォルトの名無しさん (ワンミングク MM3f-ZHy1)
2017/04/19(水) 23:12:32.75ID:9cOcPQsOM template <typename T> T max(T a, T b) { return x > y ? x : y; }
だろ?馬鹿?
しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ?
使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
だろ?馬鹿?
しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ?
使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
231デフォルトの名無しさん (ワッチョイ bb1f-ZHy1)
2017/04/19(水) 23:14:03.78ID:1eYI3Ipd0 >>229
RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
232デフォルトの名無しさん (ワッチョイ efa6-HE/W)
2017/04/19(水) 23:28:44.31ID:1gRwKhTB0 テンプレートだと指が勝手にユニバーサル参照にしてしまう
233デフォルトの名無しさん (オッペケ Sr6f-xkGs)
2017/04/19(水) 23:53:27.98ID:5Pu3YB5qr234デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/20(木) 00:12:38.85ID:tHs+CIU3r >template <typename T> T max(T a, T b) { return x > y ? x : y; }
>だろ?馬鹿?
>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
>だろ?馬鹿?
>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
235デフォルトの名無しさん (ワントンキン MMfa-kezb)
2017/04/20(木) 00:17:15.41ID:4toBdd3vM いやお前だよ…
236デフォルトの名無しさん (ワッチョイ 1f8f-AhUp)
2017/04/20(木) 05:55:38.33ID:dzDslOc/0 js訛りのC++か
気がつくとぼっちだぜ
んなキモいことしてっと
気がつくとぼっちだぜ
んなキモいことしてっと
237デフォルトの名無しさん (ワッチョイ 871f-HDOw)
2017/04/20(木) 06:46:57.40ID:4gdppVlz0 そういやC++のきれいなコードあんまり見たことない
238デフォルトの名無しさん (スップ Sd4a-Vs57)
2017/04/20(木) 12:06:51.73ID:nHxDShTLd 俺のコードはスカスカで綺麗だぜ!
239 ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ (ワッチョイ 8acc-C5/3)
2017/04/20(木) 16:31:13.15ID:dSLwtaqZ0 ,,-―--、
|:::::::::::::;;;ノ
|::::::::::( 」
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
|:::::::::::::;;;ノ
|::::::::::( 」
ノノノ ヽ_l
,,-┴―┴- 、 ∩_
/,|┌-[]─┐| \ ( ノ
/ ヽ| | バ | '、/\ / /
/ `./| | カ | |\ /
\ ヽ| lゝ | | \__/
\ |  ̄ ̄ ̄ |
⊂|______|
|l_l i l_l |
| ┬ |
240デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/20(木) 16:39:26.78ID:pGeg/NAi0 俺のコードにはファウンデーションを丹念に塗ってある
241デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/20(木) 21:34:46.16ID:iTkbXITvr >>232
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
242デフォルトの名無しさん (ワッチョイ 87f4-bQlo)
2017/04/20(木) 21:45:04.01ID:OBF/5/VT0 >>240
MFCとか綺麗だよねw
MFCとか綺麗だよねw
243デフォルトの名無しさん (ワッチョイ 06a6-HDOw)
2017/04/20(木) 22:40:39.82ID:16AwdhdC0244デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:01:58.43ID:jq02h6/Cr Effective Modern C++のItem 30を読まなくても幾つかは日常的に気付きそうなものだが
struct A { constexpr static int N = 1'000; };
f_pass_by_value(A::N); // OK
f_pass_by_universal_ref(A::N); // NG
struct A { constexpr static int N = 1'000; };
f_pass_by_value(A::N); // OK
f_pass_by_universal_ref(A::N); // NG
245デフォルトの名無しさん (ワッチョイ a375-OSeR)
2017/04/21(金) 14:33:26.68ID:SD7KIjS10 >>244
それ -std=c++1z で通るのな。規格変わったん?
それ -std=c++1z で通るのな。規格変わったん?
246デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:40:59.59ID:jq02h6/Cr247デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/21(金) 14:43:15.61ID:jq02h6/Cr だがこれはC++17でも通らない
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
248デフォルトの名無しさん (スップ Sd4a-Vs57)
2017/04/21(金) 14:47:58.15ID:uAFMuOM4d クソザコなので日常的には何も気付かない
249デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 11:36:55.65ID:onWybp6E0 質問
std::map<key_t, int>にkey_t型のブツの個数を格納したいのですが、どう書くのがSTL的に推奨?
仮に
typedef std::map<key_t, value_t> dic_t;
dic_t dic;
key_t key;
であるとして、
(1) std::pair<dic_t::iterator, bool> result = dic.insert(dic_t::value_type(key, 1));
if (!result.second) { result.first->second++; }
(2) dic_t::iterator it = dic.find(key);
if (it == dic.end()) { dic[key] = 1; } else { it->second++; }
(3) その他
みたいな?
std::map<key_t, int>にkey_t型のブツの個数を格納したいのですが、どう書くのがSTL的に推奨?
仮に
typedef std::map<key_t, value_t> dic_t;
dic_t dic;
key_t key;
であるとして、
(1) std::pair<dic_t::iterator, bool> result = dic.insert(dic_t::value_type(key, 1));
if (!result.second) { result.first->second++; }
(2) dic_t::iterator it = dic.find(key);
if (it == dic.end()) { dic[key] = 1; } else { it->second++; }
(3) その他
みたいな?
250デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 11:40:30.73ID:onWybp6E0251デフォルトの名無しさん (ワッチョイ 2756-2VNN)
2017/04/23(日) 11:58:50.37ID:VmCxZvh+0 std::map::size で取得
252デフォルトの名無しさん (ワッチョイ fad4-MAHZ)
2017/04/23(日) 12:31:44.54ID:XHzgUmp00 >>249
++dic[key];
++dic[key];
253デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/23(日) 13:01:20.45ID:E5WPNsUIr 質問者の日本語がクソだと251のようなレスがついてしまっても仕方ない
254デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/23(日) 13:59:45.57ID:onWybp6E0 >>252
ゆ、許された…!
ゆ、許された…!
255デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/23(日) 21:33:17.66ID:+WngXvwH0 よくわかんないけどmax_elementでゲッツした数字をインクレメントしてそいつをキーにすればいいなじゃないか?
256デフォルトの名無しさん (ワッチョイ eac3-Fg7L)
2017/04/23(日) 22:33:59.07ID:W0RIoSIf0 からのターン
257デフォルトの名無しさん (ワッチョイ 7fd4-fTYt)
2017/04/25(火) 01:55:12.08ID:2owVuizj0 fopen()を使う場合は、
shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose );
と書けるんですが、
fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose );
と書けるんですが、
fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
258デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/25(火) 02:09:15.69ID:L5bW9/iP0 ステップ1:shared_ptr<FILE> fp( [] { FILE* fp; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり
マックはかんたんなんだ。
ステップ2:おわり
マックはかんたんなんだ。
259257 (ワッチョイ 7fd4-fTYt)
2017/04/25(火) 07:41:45.06ID:2owVuizj0260デフォルトの名無しさん (ワッチョイ de92-UbXF)
2017/04/25(火) 08:33:19.57ID:OEZA+HZE0 クラス化したほうがいいよ
261デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/25(火) 09:08:54.62ID:qHdDYIsy0 >>258
最初にNULL入れておかんと未定義になるかもでよ
最初にNULL入れておかんと未定義になるかもでよ
262デフォルトの名無しさん (ガックシ 06c6-kpPm)
2017/04/25(火) 14:04:32.36ID:o5+7I7e76 超初心者です。
Ptr<Hoge> abc::createHoge()
abc::Hoge::do()
すると、
静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります
と言われました。
Hogeのdoを使うにはどうすればいいですか?
Ptr<Hoge> abc::createHoge()
abc::Hoge::do()
すると、
静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります
と言われました。
Hogeのdoを使うにはどうすればいいですか?
263デフォルトの名無しさん (ブーイモ MMef-FQBx)
2017/04/25(火) 14:18:34.30ID:P05pQrZGM264デフォルトの名無しさん (ガックシ 06c6-kpPm)
2017/04/25(火) 14:28:56.92ID:o5+7I7e76 できました!ありがとうございます
265デフォルトの名無しさん (スップ Sd4a-Et+B)
2017/04/25(火) 14:33:18.17ID:Z7zV+yycd いえいえどういたしまして
266デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/25(火) 22:33:09.32ID:ggixqTU6r >>261
他人をおとしいれるのがそんな楽しいのか?
他人をおとしいれるのがそんな楽しいのか?
267デフォルトの名無しさん (ワンミングク MMfa-OSeR)
2017/04/25(火) 23:25:19.17ID:xMNxUhiOM >>266
そんな事で陥れられるの?生きていくの大変そうだね。
そんな事で陥れられるの?生きていくの大変そうだね。
268デフォルトの名無しさん (ワッチョイ aa36-a+Jf)
2017/04/25(火) 23:34:24.96ID:9Zr4ftW/0 >>266
単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。
それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。
それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
269デフォルトの名無しさん (ワッチョイ 0b59-C4NQ)
2017/04/25(火) 23:34:51.11ID:oTWBT7hM0 std::shared_ptr<T>::get()
270デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/26(水) 00:03:07.94ID:/Py/BDPD0 ステップ1:shared_ptr<FILE> fp( [] { FILE* fp=0←ココ; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり
ステップ2:おわり
271デフォルトの名無しさん (ワッチョイ 0b00-amNx)
2017/04/26(水) 01:30:30.17ID:zA6HVqFs0 止めて!私のことで争わないで
272ich1 (アウアウウー Sacf-CGRX)
2017/04/26(水) 07:22:16.30ID:KcpaNie5a273デフォルトの名無しさん (オッペケ Sr23-bEgw)
2017/04/26(水) 08:02:32.64ID:jkGhVm4nr274デフォルトの名無しさん (ワッチョイ 7fd4-fTYt)
2017/04/26(水) 17:54:18.88ID:BTdjOnYo0 http://andriasang.com/com8ig/mt_framework/images/21dxs/full.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg
こういうGUIって、どうやって作るんでしょうか?
Win32APIで頑張れば作れるんでしょうか?
それとも、ライブラリが売られたりしているんでしょうか??
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg
こういうGUIって、どうやって作るんでしょうか?
Win32APIで頑張れば作れるんでしょうか?
それとも、ライブラリが売られたりしているんでしょうか??
275デフォルトの名無しさん (ワッチョイ 8acc-C5/3)
2017/04/26(水) 18:00:10.68ID:/Py/BDPD0 TVTestのソースが参考になる
276デフォルトの名無しさん (ワッチョイ 0b7a-g4bp)
2017/04/26(水) 20:24:27.91ID:5Saru3KQ0 もちろん作れる
自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
277デフォルトの名無しさん (ササクッテロル Sp1f-wV0R)
2017/04/28(金) 01:35:45.00ID:0T/EiQwUp こういうの作るならQtとか使いたくなる
278デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/28(金) 09:33:31.10ID:UVvcEOOo0279デフォルトの名無しさん (ワッチョイ 0bf7-hLAX)
2017/04/28(金) 09:48:07.09ID:mPeDNIgc0 横だけど >>274 のGUIって Qt? GTK+?
Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。
昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。
昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
280デフォルトの名無しさん (スップ Sd7f-8ZdP)
2017/04/28(金) 12:15:44.81ID:4D2iUcPod こういうGUIって、C#で簡単に組めたりするのかな?
281デフォルトの名無しさん (ワッチョイ 0bf7-hLAX)
2017/04/28(金) 12:46:51.26ID:mPeDNIgc0282デフォルトの名無しさん (アウアウエー Sa7f-PXQB)
2017/04/28(金) 15:07:30.49ID:MOddalxma283デフォルトの名無しさん (オッペケ Sr1f-zNGF)
2017/04/28(金) 18:26:35.16ID:swDsSHUMr284デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/28(金) 22:50:15.26ID:UVvcEOOo0 >>283
アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
285デフォルトの名無しさん (ワッチョイ 5fcc-yfg2)
2017/04/28(金) 23:01:16.62ID:roW/lMqL0 >>283
コイツ多分学会信者
コイツ多分学会信者
286デフォルトの名無しさん (ワッチョイ db28-1Y5j)
2017/04/29(土) 02:12:01.00ID:XzsrE9yB0 >>279
コンシューマ向けのゲームエンジンだし自前なんじゃ?
コンシューマ向けのゲームエンジンだし自前なんじゃ?
287デフォルトの名無しさん (アウアウエー Sa7f-PXQB)
2017/04/29(土) 09:23:14.57ID:nyANDfpKa 学会?
創価の方も、大学的なのも縁が無いが。。。
創価の方も、大学的なのも縁が無いが。。。
288デフォルトの名無しさん (ワッチョイ db7a-xuhN)
2017/04/29(土) 22:43:17.83ID:QeCXmDWM0 ヘッダファイルを作らずに他ファイルからの利用は前方宣言だけですますのって作法的に問題はない?
289デフォルトの名無しさん (ワッチョイ 6fa6-Ahd3)
2017/04/29(土) 22:55:12.24ID:3c3Uk9T30 関数だったら数による
290デフォルトの名無しさん (ワッチョイ 6bda-L1Lv)
2017/04/29(土) 23:03:29.29ID:S/2IADGO0 >>288
その前方宣言をヘッダファイルに書いといて欲しいな。
その前方宣言をヘッダファイルに書いといて欲しいな。
291デフォルトの名無しさん (ワッチョイ db00-HpWq)
2017/04/29(土) 23:08:33.30ID:hqOpRyPj0 そいつが実装の内部で利用するもので参照先が1ファイルぐらいだったら別にいいんじゃないかな
複数あったら流石にヘッダに書いた方がいいよ
複数あったら流石にヘッダに書いた方がいいよ
292デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/29(土) 23:15:36.74ID:xdExBL2r0 引数とか変えたときリンク時(extern ”C”だったら実行時)までエラーが解らないのめんどくさくない?
293デフォルトの名無しさん (ワッチョイ 6f14-EmiY)
2017/04/29(土) 23:16:41.78ID:Ng1HwepU0 でもメンテ時に混乱しそう
294デフォルトの名無しさん (ワッチョイ db59-b9Hp)
2017/04/30(日) 08:25:35.26ID:wQZYXO/b0295274 (ワッチョイ 0bd4-mDay)
2017/04/30(日) 09:35:48.73ID:DBp9z9wf0 みなさん、ご回答ありがとうございました。
GUIライブラリって調べてみたら山ほどあるんですね。
>>274のツールもGUIライブラリを使ったのかもしれませんね。
まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw
調べてGUIライブラリの中ではimguiが最も便利そうだったので、
使ってみることにします。
ありがとうございました。
GUIライブラリって調べてみたら山ほどあるんですね。
>>274のツールもGUIライブラリを使ったのかもしれませんね。
まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw
調べてGUIライブラリの中ではimguiが最も便利そうだったので、
使ってみることにします。
ありがとうございました。
296デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/30(日) 12:29:31.69ID:kmaYjpOe0297デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/04/30(日) 12:42:40.89ID:kmaYjpOe0 返り値の型を変えたときもそうだけど、変更したとき未定義動作になりやすいからヘッダファイルは作った方が良いよ
298デフォルトの名無しさん (オッペケ Sr1f-zNGF)
2017/04/30(日) 14:56:05.47ID:Lu1XcywOr 『extern ”C”だったら実行時)までエラーが解らない』
どうしてこう他人を陥れたがるのか不思議で仕方ない
どうしてこう他人を陥れたがるのか不思議で仕方ない
299デフォルトの名無しさん (ワッチョイ 5f25-XZJj)
2017/04/30(日) 15:34:31.43ID:6FmE5H1T0300デフォルトの名無しさん (ササクッテロレ Sp1f-X/f6)
2017/04/30(日) 18:30:55.32ID:iF9ITzdSp ぼくの考えとちがう
って意味だよ
って意味だよ
301デフォルトの名無しさん (ワッチョイ 5b3c-VhBr)
2017/04/30(日) 19:24:02.13ID:SNt5gcRU0302デフォルトの名無しさん (スッップ Sd7f-3a3D)
2017/05/01(月) 17:50:14.23ID:JVOYymf/d >>300
そういう意味だったのか。
そういう意味だったのか。
303デフォルトの名無しさん (ワッチョイ 5b3c-Heg1)
2017/05/03(水) 00:04:07.99ID:yi3RDMFU0 皆さんカバレッジってどうやって計測してますか?
環境がLinuxなのでgcov+lcov使って見てるんですが、Branch Coverageを見ると大半の行(分岐のない行を含む)で分岐通ってないって計測結果が出てきて使い物にならず困ってます
環境がLinuxなのでgcov+lcov使って見てるんですが、Branch Coverageを見ると大半の行(分岐のない行を含む)で分岐通ってないって計測結果が出てきて使い物にならず困ってます
304デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
2017/05/03(水) 00:19:05.08ID:jU3FK0a/0305274 (ワッチョイ 0bd4-mDay)
2017/05/03(水) 00:41:17.84ID:uzk5Z1ua0306デフォルトの名無しさん (ワッチョイ 5b3c-Heg1)
2017/05/03(水) 01:39:50.15ID:yi3RDMFU0 >>304
じっくり見てみるとSTL使ってる所が軒並みBranch Coverage未達になってるようなので、インラインで展開されたSTLの中に"型で分岐"してるって箇所があると未達扱いになってるんですかね
どっちにしても使い物にならないと思うんですが、何か設定見逃してるのかなあ
じっくり見てみるとSTL使ってる所が軒並みBranch Coverage未達になってるようなので、インラインで展開されたSTLの中に"型で分岐"してるって箇所があると未達扱いになってるんですかね
どっちにしても使い物にならないと思うんですが、何か設定見逃してるのかなあ
307デフォルトの名無しさん (ワッチョイ dfc3-lkzn)
2017/05/03(水) 04:17:06.25ID:QvJixJfx0 テンプレコードを計測対象から外す
308デフォルトの名無しさん (オッペケ Srf7-TAoZ)
2017/05/04(木) 00:37:27.95ID:p6U1yQ51r 「分岐通ってないって計測結果が出てきて使い物にならず困ってます」
↓
「計測対象から外す」
これがアスペの思考というやつか
↓
「計測対象から外す」
これがアスペの思考というやつか
309デフォルトの名無しさん (ワッチョイ ef7a-7DwS)
2017/05/04(木) 00:38:15.73ID:1zBs0s1k0 ばれなきゃ問題ない
310デフォルトの名無しさん (ワッチョイ 12c3-Rk/b)
2017/05/04(木) 07:12:56.30ID:wet+9Z670 ファイル毎にカバレージ結果が出力されててテンプレコードのファイルもあればそれだけはずす
311デフォルトの名無しさん (ワッチョイ 2775-T0jS)
2017/05/04(木) 07:29:40.84ID:o/Y/60hm0 普通カバレッジ計測というかテストはデバッグビルドでするよね?
なんでインライン展開されてんの?
なんでインライン展開されてんの?
312デフォルトの名無しさん (ワッチョイ cf92-npF+)
2017/05/04(木) 07:50:33.85ID:z7PkcQKp0 ん?
313デフォルトの名無しさん (ワッチョイ cf3c-+AEo)
2017/05/04(木) 08:18:30.19ID:Qfe4sTHU0314デフォルトの名無しさん (ワッチョイ e2b4-TAoZ)
2017/05/04(木) 08:40:35.32ID:h77SQQVQ0 「なんでインライン展開されてんの?」
これが会話の出来ないアスペというやつだな
これが会話の出来ないアスペというやつだな
315デフォルトの名無しさん (ワッチョイ bea6-Ogwz)
2017/05/04(木) 08:45:37.98ID:fxaUnXhO0 アスペルガー症候群の話が一種の希望になっているのだな
316デフォルトの名無しさん
2017/05/04(木) 09:21:07.22ID:wA0ba8dUO へえ
317デフォルトの名無しさん (ワッチョイ 2775-T0jS)
2017/05/04(木) 09:54:23.37ID:o/Y/60hm0 >>314
え?どこが?
え?どこが?
318デフォルトの名無しさん (ワッチョイ 2775-T0jS)
2017/05/04(木) 09:55:59.68ID:o/Y/60hm0 >>313
俺はgcov使ってるけど行カバレッジしか見てないよ
俺はgcov使ってるけど行カバレッジしか見てないよ
319デフォルトの名無しさん (ワッチョイ 2775-T0jS)
2017/05/05(金) 14:14:29.37ID:b5hiFaeg0 自分の思った答えと違う物が出てきたら相手をアスペと言って話を打ち切る方が会話の出来ない奴だな
320デフォルトの名無しさん (ワッチョイ 360d-vxmx)
2017/05/05(金) 17:05:00.51ID:vdKQUTyP0 意味もよく知らずに単なる記号として使ってるのまる出しだしね
321デフォルトの名無しさん (ワッチョイ 3259-lr4m)
2017/05/07(日) 07:51:48.66ID:iaJElGo90 質問ッス
ヘッダファイルに
class LongLongLongNameClass { .... }
という長い名前のクラス定義を書いて、
.cppの方にメソッドの本体を書く場合、
LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
...
とか繰り返しLongLongLongNameClass::をタイプしたりコピペする羽目になり、
この手間を減らしたいのですが何か良いエディターとかプラグインとかはご存知ありませんか、
VCのクラスウィザードは書式がほぼ決め打ちで自由に弄れないのでイヤン
ヘッダファイルに
class LongLongLongNameClass { .... }
という長い名前のクラス定義を書いて、
.cppの方にメソッドの本体を書く場合、
LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
...
とか繰り返しLongLongLongNameClass::をタイプしたりコピペする羽目になり、
この手間を減らしたいのですが何か良いエディターとかプラグインとかはご存知ありませんか、
VCのクラスウィザードは書式がほぼ決め打ちで自由に弄れないのでイヤン
322デフォルトの名無しさん (ワッチョイ 32cc-LLPe)
2017/05/07(日) 07:54:18.33ID:nwkz2Klr0 using
323デフォルトの名無しさん (ワッチョイ 3259-lr4m)
2017/05/07(日) 08:07:21.46ID:iaJElGo90 >>322
説明が抜けてすみませんが
LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
...
というスタイルは変えずに入力したいので、usingやプリプロセッサは極力使わない方向でおながいします
ちな原則usingの使用は関数スコープ内のみとさせていただいております
(ソースコード先頭でusing namespace std;とやる人が定期的に現れるため
説明が抜けてすみませんが
LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
...
というスタイルは変えずに入力したいので、usingやプリプロセッサは極力使わない方向でおながいします
ちな原則usingの使用は関数スコープ内のみとさせていただいております
(ソースコード先頭でusing namespace std;とやる人が定期的に現れるため
324デフォルトの名無しさん (ワッチョイ fe14-PP+T)
2017/05/07(日) 08:27:15.49ID:FjvRjK2r0 C++の質問というよりエディタ側で解決したいならエディタ側のスレで聞いたほうがいい希ガス
325デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ b7f1-Dey6)
2017/05/07(日) 09:08:19.96ID:UkiHSZAH0 CTRL+Vを何種類か格納できるソフトがあるだろう
326デフォルトの名無しさん (ワッチョイ 32cc-LLPe)
2017/05/07(日) 09:10:08.52ID:nwkz2Klr0 VSCode辺りのプラグインになんかあるんジャマイカ?
327デフォルトの名無しさん (ワッチョイ 46cd-pxHH)
2017/05/07(日) 09:51:45.18ID:/CYUNTD10 Visual Studio使ってるなら普通にIntelliSenseで補完してもらうんじゃだめなの?
328デフォルトの名無しさん (ワッチョイ ef00-8Vn8)
2017/05/07(日) 10:58:48.07ID:weBnw+MW0 このクソコードを書いたのは誰だぁ! バッ!ってやりたいけど張本人は逃亡済みなんだろうな
329デフォルトの名無しさん (ワッチョイ ef7a-7DwS)
2017/05/07(日) 11:44:37.51ID:onq3BzaP0 Visual studioならヘッダに宣言を書いて、それを右クリックで空の関数を自動実装してくれる機能がある
330デフォルトの名無しさん (ワッチョイ cf92-npF+)
2017/05/07(日) 11:56:22.15ID:w48Ptm+H0331デフォルトの名無しさん (ワッチョイ 3259-lr4m)
2017/05/07(日) 12:27:41.53ID:iaJElGo90332デフォルトの名無しさん (ワッチョイ 3e0d-Yh7p)
2017/05/19(金) 17:53:08.12ID:/7Hxktnz0 C++17か、C++20でもいいけど
virtualをextern "C"みたいにブレースで範囲指定できるようになって欲しい
virtualをextern "C"みたいにブレースで範囲指定できるようになって欲しい
333デフォルトの名無しさん (ドコグロ MM62-O2RP)
2017/05/19(金) 18:07:35.98ID:TovPGI11M c++って、その手の構文糖は採用しないだろ。
334デフォルトの名無しさん (ワッチョイ aacc-tFGI)
2017/05/19(金) 18:14:00.03ID:6plAc3kp0 んだよ、Pascalでwith使っとけやトーシロー
335デフォルトの名無しさん (ワッチョイ 2a76-ysFl)
2017/05/19(金) 18:16:16.14ID:A3DJr2FW0 defaultって日本人は標準という意味で使っているけれど、本当は『不履行」とか否定的な意味の単語だよ
de factoと間違えて使っている
de factoと間違えて使っている
336デフォルトの名無しさん (ワッチョイ 6b00-Gjiu)
2017/05/19(金) 19:01:46.55ID:/MnRfLXT0 いい加減純粋仮想関数の = 0を見直すべき
337デフォルトの名無しさん (スッップ Sdea-9e5p)
2017/05/19(金) 19:09:38.92ID:w2H0BIW7d338デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/19(金) 22:09:56.69ID:/7Hxktnz0 >>333
その手のって、extern "C"では採用してんじゃん
多相的クラスやインターフェイスを作ってるとき、
キーワードvirtualのタイプ数って無駄な苦しみだと思わない?
多相的クラスでデストラクタがvirtualとか自明じゃん
その手のって、extern "C"では採用してんじゃん
多相的クラスやインターフェイスを作ってるとき、
キーワードvirtualのタイプ数って無駄な苦しみだと思わない?
多相的クラスでデストラクタがvirtualとか自明じゃん
339デフォルトの名無しさん (ワントンキン MM3a-y2+T)
2017/05/19(金) 22:28:20.75ID:ZQ0nZzJJM >>338
デストラクタがvirtualなのが自明なのは継承前提のクラスだけでしょ
ランタイムオーバーヘッドを可能な限りなくしたいC++でそんなこと前提にされてもって感じだけど
まぁ確かにclassのプリフィクスにabstractとかつけたら全部virtualになるとかはあってもいいかもね
デストラクタがvirtualなのが自明なのは継承前提のクラスだけでしょ
ランタイムオーバーヘッドを可能な限りなくしたいC++でそんなこと前提にされてもって感じだけど
まぁ確かにclassのプリフィクスにabstractとかつけたら全部virtualになるとかはあってもいいかもね
340デフォルトの名無しさん (ワッチョイ 4ec8-kvD5)
2017/05/20(土) 03:08:45.60ID:e3UL0Vlz0 ヘッダファイルに、すでに他のヘッダファイルで、宣言されているクラスが
以下のように書かれているのは、なんのためなのでしょうか?
class CHoge_1; // すでに他のヘッダファイルで宣言済み
class CHogehoge; // すでに他のヘッダファイルで宣言済み
class CTestClass : public CMainClass //派生:基底
{
.......
.......
}
よろしくお願いします。
以下のように書かれているのは、なんのためなのでしょうか?
class CHoge_1; // すでに他のヘッダファイルで宣言済み
class CHogehoge; // すでに他のヘッダファイルで宣言済み
class CTestClass : public CMainClass //派生:基底
{
.......
.......
}
よろしくお願いします。
341デフォルトの名無しさん (ワッチョイ 4a3f-opbC)
2017/05/20(土) 03:19:15.34ID:T/6nYsY80 >>340
「前方宣言」でググれ
「前方宣言」でググれ
342デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/20(土) 05:47:54.27ID:AtO1B5PX0 >>339
継承を使うからってデストラクタのvirtualが自明って?
んなわけねえだろ、たとえばprivate継承を使うようなケースでは
おまえの言うとおりオーバーヘッドを重視することがあるし
インターフェイスでだっていちいちデストラクタなんぞ作んねえ
しかし多相的クラスというからにはアップキャスト前提は間違いない
俺はそこを言ったんだよ
で、
class [[abstract]] oddsandsods; //これで全部virtualということか
うん、そういうのでもいい
キーワードがちょっと気になるかな
[[polymorphic]]かなって思う
継承を使うからってデストラクタのvirtualが自明って?
んなわけねえだろ、たとえばprivate継承を使うようなケースでは
おまえの言うとおりオーバーヘッドを重視することがあるし
インターフェイスでだっていちいちデストラクタなんぞ作んねえ
しかし多相的クラスというからにはアップキャスト前提は間違いない
俺はそこを言ったんだよ
で、
class [[abstract]] oddsandsods; //これで全部virtualということか
うん、そういうのでもいい
キーワードがちょっと気になるかな
[[polymorphic]]かなって思う
343デフォルトの名無しさん (ワッチョイ 4ec8-kvD5)
2017/05/20(土) 10:19:27.00ID:e3UL0Vlz0344デフォルトの名無しさん (ワッチョイ cb3c-g8s4)
2017/05/20(土) 15:27:14.98ID:dnejRURa0 お前らクラス図書いてる?
テンプレートとか関数オブジェクトとか面倒くさ過ぎなんだけど
テンプレートとか関数オブジェクトとか面倒くさ過ぎなんだけど
345デフォルトの名無しさん (ワッチョイ cacd-bwHs)
2017/05/20(土) 16:43:45.54ID:7xanTQLT0 完全なドキュメントよりも、動くソフトウェア
の理念の元書いておりません
の理念の元書いておりません
346デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/20(土) 17:47:18.38ID:AtO1B5PX0 書いたことあるけど、泣けてくるぞ
わざわざ人間がやる必要性が全く感じられないから
わざわざ人間がやる必要性が全く感じられないから
347デフォルトの名無しさん (ワッチョイ 6b7a-a8jQ)
2017/05/20(土) 19:02:29.38ID:QnLfIsPY0 クラス図は書かないけど
コード書く前にこれとこれを用意してこれとあれがこうなってこうみたいな下書きをノートに適当に書いてる
コード書く前にこれとこれを用意してこれとあれがこうなってこうみたいな下書きをノートに適当に書いてる
348デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/20(土) 19:31:29.85ID:AtO1B5PX0 ああ、それならやるね
結局、ずいぶん違ったものが出来てくるけどw
結局、ずいぶん違ったものが出来てくるけどw
349デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/20(土) 19:31:49.65ID:AtO1B5PX0 うん、正直にそれは恥だ
350デフォルトの名無しさん (ワッチョイ cb3c-g8s4)
2017/05/20(土) 23:17:42.25ID:dnejRURa0 まあ、そんなもんだよなあ
考えの整理するのに書くのは良いんだけど、実装に追従しろとか実装の前に書けとか言われると怠くて敵わんわ
考えの整理するのに書くのは良いんだけど、実装に追従しろとか実装の前に書けとか言われると怠くて敵わんわ
351デフォルトの名無しさん (ワッチョイ 2ac3-6P9O)
2017/05/21(日) 08:19:58.20ID:MWprk4Bd0 チームでやるならクラス図かいとかないとカオスにならない?
352デフォルトの名無しさん (ワンミングク MM3a-y2+T)
2017/05/21(日) 08:27:25.16ID:AwcA0VMJM 実装前に書いたメンテされないクラス図なんて役に立つわけねーやろ
自分の設計用に下書きだけして、あとはDoxygenに任せればよろしい
自分の設計用に下書きだけして、あとはDoxygenに任せればよろしい
353デフォルトの名無しさん (ワッチョイ 6b7a-a8jQ)
2017/05/21(日) 11:02:09.47ID:a7r1hz6X0 目的と使い方と意図がちゃんと書かれたコメントのほうが重要
354デフォルトの名無しさん (ワッチョイ ca59-LPNL)
2017/05/21(日) 11:42:21.53ID:N/0f8z0A0 astah UMLを使えば
(クラス図<-->シーケンス図)→コード(自動生成)
というのがだいたいシームレスにできる
ずいぶん違ったものが出来てくるのは慣れの問題かと、
(UML自体かなり計算機の仕組み寄りで、それほど直感的な表現方法とは言えない)
(クラス図<-->シーケンス図)→コード(自動生成)
というのがだいたいシームレスにできる
ずいぶん違ったものが出来てくるのは慣れの問題かと、
(UML自体かなり計算機の仕組み寄りで、それほど直感的な表現方法とは言えない)
355デフォルトの名無しさん (ワッチョイ ca59-LPNL)
2017/05/21(日) 11:43:44.12ID:N/0f8z0A0 コードに書かれていることが何よりも真実というのは同意
356デフォルトの名無しさん (ワッチョイ aa18-JCxV)
2017/05/21(日) 12:59:09.81ID:ViqOYprV0 >>353
これな
これな
357デフォルトの名無しさん (ワッチョイ aa18-JCxV)
2017/05/21(日) 13:00:19.74ID:ViqOYprV0 ただ、コメントすらメンテされなくなるのが辛いよ…
358デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 13:37:07.31ID:EhbYbiNc0 コメントのバグは検出不能なのが厄介
359デフォルトの名無しさん (ブーイモ MM27-UJyg)
2017/05/21(日) 13:58:18.34ID:4YmMkUMIM 自分は書いてるよ。
大枠だけ書いて細かなクラスは表現しない(したくない)から、むしろツールは使わずに手書きで書いてる。
大枠だけ書いて細かなクラスは表現しない(したくない)から、むしろツールは使わずに手書きで書いてる。
360デフォルトの名無しさん (オッペケ Sr03-ouvG)
2017/05/21(日) 14:15:03.88ID:G67hupcsr この手の議論で特徴的なのが書かない派の殆どは
自分が書けなかった理由を書かなくて良い理由にすり替えていること
自分が書けなかった理由を書かなくて良い理由にすり替えていること
361デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
2017/05/21(日) 17:51:48.31ID:EhbYbiNc0 「ほとんど」でうまく逃げてるな
362デフォルトの名無しさん (ワッチョイ de1f-kvD5)
2017/05/21(日) 19:37:38.96ID:D/aE/Z0L0 設計書に書いたことをまたコードに書いたら
メンテの手間が増えるじゃないか
メンテの手間が増えるじゃないか
363デフォルトの名無しさん (ワッチョイ ca59-LPNL)
2017/05/21(日) 23:17:17.16ID:N/0f8z0A0 コードの他に何か残すなら、単体テスト(コード)とか試験仕様書とかを書けば良い
単体テスト(コード)や試験仕様書なら、少なくとも書いた範囲についてコードとの不一致は有り得ないのだから
単体テスト(コード)や試験仕様書なら、少なくとも書いた範囲についてコードとの不一致は有り得ないのだから
364デフォルトの名無しさん (アウアウエー Sac2-bwHs)
2017/05/23(火) 07:38:45.51ID:K3FeDoGDa enumの中身を漏れなくする方法はないの?
365デフォルトの名無しさん (ワッチョイ 0375-LToT)
2017/05/23(火) 07:54:11.86ID:10krpFBv0 >>364
?
?
366デフォルトの名無しさん (オッペケ Sr03-ouvG)
2017/05/23(火) 08:12:47.34ID:I6yYOIGbr367デフォルトの名無しさん (ワッチョイ ca0b-3IXE)
2017/05/23(火) 09:32:50.64ID:J4YcG+3k0 今ならenum classやろ
enum class more{aaa};
enum class more{aaa};
368デフォルトの名無しさん (ササクッテロリ Sp03-g8s4)
2017/05/23(火) 22:40:27.44ID:GqYsAhEPp >enumの中身を漏れなく(イテレート)する方法はないの?
369デフォルトの名無しさん (ドコグロ MM13-J3Da)
2017/05/24(水) 07:25:20.05ID:OFlbMgowM >>368
ちょっとはググれカス
https://zenmai.wordpress.com/2009/11/11/enum%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%82%92foreach%E3%81%A7%E4%BD%BF%E3%81%86%E3%80%8Cc/
c# foreach まで入力したら enum が補完されるぐらいだからそう言うことをやりたい奴は多いのかも
ちょっとはググれカス
https://zenmai.wordpress.com/2009/11/11/enum%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%82%92foreach%E3%81%A7%E4%BD%BF%E3%81%86%E3%80%8Cc/
c# foreach まで入力したら enum が補完されるぐらいだからそう言うことをやりたい奴は多いのかも
370デフォルトの名無しさん (オッペケ Sr03-ouvG)
2017/05/24(水) 08:14:20.55ID:Uh0d2nCgr 安定のドコグロMM
371デフォルトの名無しさん (ワッチョイ 4a6b-kvD5)
2017/05/24(水) 14:16:08.43ID:K4LsGUxm0 Cの時代からenumは未だに慣れない
372デフォルトの名無しさん (オッペケ Sr03-ouvG)
2017/05/24(水) 22:12:49.22ID:Uh0d2nCgr むしろCでintや#defineだらけのenumを使わないコードがずっと疑問だった
373デフォルトの名無しさん (ワッチョイ 2ac3-6P9O)
2017/05/24(水) 22:17:53.05ID:QKoHZUhX0 enumに文字列定義でけんの?
374デフォルトの名無しさん (ブーイモ MM4f-JCxV)
2017/05/24(水) 22:57:19.03ID:RrwKXt6vM >>369
何故C#?
何故C#?
375デフォルトの名無しさん (ドコグロ MM3f-ijLw)
2017/05/25(木) 05:00:36.62ID:sUw+9KVjM376片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-eUT2)
2017/05/26(金) 20:36:20.09ID:jKduUXcUd 言語ではenumの列挙はサポートされてないから、そのまま必要なデータを手書きで記述するか、
プリプロセッサマクロと#includeで汚く書くしかないね。
プリプロセッサマクロと#includeで汚く書くしかないね。
377片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-eUT2)
2017/05/26(金) 20:41:12.76ID:jKduUXcUd DEFINE_HAGE(baka)
DEFINE_HAGE(boke)
...
こういった内容のテキストファイルを用意し、別のソースでマクロDEFINE_HAGEをテキトーに定義して#includeで
読み込むという素人お断りのテクニックがある。
DEFINE_HAGE(boke)
...
こういった内容のテキストファイルを用意し、別のソースでマクロDEFINE_HAGEをテキトーに定義して#includeで
読み込むという素人お断りのテクニックがある。
378デフォルトの名無しさん (ワッチョイ 9fcc-grxp)
2017/05/26(金) 23:46:38.90ID:Fq1j41HH0379片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-eUT2)
2017/05/27(土) 01:04:47.55ID:uGocpGwpd 生き残ってますか、人間ども?
380デフォルトの名無しさん (ワッチョイ 4fc8-9J/J)
2017/05/27(土) 02:22:34.43ID:rhNlL3QR0 キミも相変わらずだねw
381片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-eUT2)
2017/05/27(土) 02:29:51.07ID:uGocpGwpd 前日はrosのfreetypeを2.8に更新するパッチを作って人ひとり助けた。
382片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-eUT2)
2017/05/27(土) 02:32:13.02ID:uGocpGwpd 1日に百人助けられる頃には大金持ちになっているだろう。
383デフォルトの名無しさん (ワッチョイ 4fc8-9J/J)
2017/05/27(土) 02:53:52.81ID:rhNlL3QR0 百日に一人助けて大金持ちになるような仕事をしなければだめだよ
384デフォルトの名無しさん (ブーイモ MMbf-thZD)
2017/05/27(土) 17:46:08.41ID:91x9sFiGM385デフォルトの名無しさん (ワッチョイ 9fa6-9J/J)
2017/05/27(土) 18:09:13.93ID:HaHIN1I50 for ( auto i : enum_class )
386デフォルトの名無しさん (ワッチョイ 0b7a-Sd9V)
2017/05/27(土) 20:21:56.11ID:JH3215h60 マクロで定義と同時に配列に詰め込めばいいんじゃないか
387デフォルトの名無しさん (ワッチョイ 9f59-fjjf)
2017/05/27(土) 23:42:50.86ID:Dc3jlyQ70 enum定数はenum定数やし、
C#のIEnumerator的なブツはC++でも書けるし
ここでのenum定数の列挙ができるかできないかというのは
糖衣構文によるサポートの有無の違いでしかないと言える、
希ガス、
C#のIEnumerator的なブツはC++でも書けるし
ここでのenum定数の列挙ができるかできないかというのは
糖衣構文によるサポートの有無の違いでしかないと言える、
希ガス、
388デフォルトの名無しさん (ワッチョイ 6b3c-Ylic)
2017/05/28(日) 08:54:39.55ID:2Pirtyfh0 最近Python使い始めたけどすげー書きやすいわこれ
感動を覚えるレベル
やはりC++は糞
感動を覚えるレベル
やはりC++は糞
389デフォルトの名無しさん (ワッチョイ 9f3c-ijLw)
2017/05/28(日) 10:29:47.18ID:7TA+N7360390デフォルトの名無しさん (スプッッ Sdbf-dAmu)
2017/05/28(日) 11:07:21.67ID:OH0o0+fyd enumの要素数とか最大値最小値って取れる?
391デフォルトの名無しさん (ワッチョイ 9f59-fjjf)
2017/05/28(日) 12:05:13.52ID:zOc9NmUD0 >>389
なんか期待値が高まり杉な気がするが、
IEnumeratorについてはReset()とMoveNext()とCurrent()を宣言して、派生クラスで実装するだけにょ?
列挙するデータは派生クラス(具象クラス)側に>>386式の配列データを受け取るようなコンストラクターでも設ければ良いし、
もしC#のEnum.GetValues()とかEnum.GetNames()みたいなやつが欲しくなってもstd::mapとか使えば動くものがギリ作れるだろJK
なお上記のようなやり方がC#と比べようが無いぐらい面倒臭いという批判は
>糖衣構文によるサポートの有無の違いでしかないと言える、(>>387)
で予防炭、
なんか期待値が高まり杉な気がするが、
IEnumeratorについてはReset()とMoveNext()とCurrent()を宣言して、派生クラスで実装するだけにょ?
列挙するデータは派生クラス(具象クラス)側に>>386式の配列データを受け取るようなコンストラクターでも設ければ良いし、
もしC#のEnum.GetValues()とかEnum.GetNames()みたいなやつが欲しくなってもstd::mapとか使えば動くものがギリ作れるだろJK
なお上記のようなやり方がC#と比べようが無いぐらい面倒臭いという批判は
>糖衣構文によるサポートの有無の違いでしかないと言える、(>>387)
で予防炭、
392デフォルトの名無しさん (ワッチョイ 9f72-nHMD)
2017/05/28(日) 12:09:37.75ID:ZydFuCAS0 >>377
Eigenみたいな?
Eigenみたいな?
393デフォルトの名無しさん (ドコグロ MM3f-ijLw)
2017/05/28(日) 12:30:50.04ID:5K6OvT18M394デフォルトの名無しさん (ワッチョイ fb8e-cKxA)
2017/05/28(日) 13:42:05.12ID:ermVQ6O80 糖衣構文様に対して「違いでしかない」とか頭が高いぞ
395デフォルトの名無しさん (JP 0Hbf-ozZu)
2017/05/28(日) 13:43:10.88ID:ICysod8PH >>390
俺はいつも
enum class Hoge {
None = 0,
Fuga,
Foo,
Woo,
Size
}
ってしてる
俺はいつも
enum class Hoge {
None = 0,
Fuga,
Foo,
Woo,
Size
}
ってしてる
396デフォルトの名無しさん (JP 0H49-zUMb)
2017/06/01(木) 02:15:55.12ID:gpnYGtb7H すみません、どなたか教えてください
独自のイテレータを実装するにはどうしたらいいのでしょうか?
ググってみたら、c++17でstd::iteratorがdeprecateになったらしいのですが、
独自のイテレータを作るときにstd::iteratorを継承するのはbad practiceってことになるのでしょうか?
独自のイテレータを実装するにはどうしたらいいのでしょうか?
ググってみたら、c++17でstd::iteratorがdeprecateになったらしいのですが、
独自のイテレータを作るときにstd::iteratorを継承するのはbad practiceってことになるのでしょうか?
397デフォルトの名無しさん (ワッチョイ 911f-MPmX)
2017/06/01(木) 06:36:46.84ID:hk9X98Pv0 >>396
boost::iterator_adoptor
boost::iterator_adoptor
398デフォルトの名無しさん (ドコグロ MM31-Tm/A)
2017/06/01(木) 06:54:03.34ID:YbQp1MN1M >>396
ググってるならこの手のページもヒットすると思うが...
http://faithandbrave.hateblo.jp/entry/2016/09/12/145923
標準ライブラリの範囲では、イテレータは最初から最後まで自分で定義することになります。
ググってるならこの手のページもヒットすると思うが...
http://faithandbrave.hateblo.jp/entry/2016/09/12/145923
標準ライブラリの範囲では、イテレータは最初から最後まで自分で定義することになります。
399デフォルトの名無しさん (ワッチョイ f97a-ydpN)
2017/06/01(木) 08:18:50.46ID:3mGWxYm60 イテレータの要件さえ満たしておけば実装はなんでもいいのでは
400デフォルトの名無しさん (オッペケ Sr3d-J6tP)
2017/06/01(木) 08:23:03.98ID:97W8lGpzr >標準ライブラリの範囲では、イテレータは最初から最後まで自分で定義することになります
高橋昌は規格のドラフトも読まないほどモウロクしたのだろうか?
高橋昌は規格のドラフトも読まないほどモウロクしたのだろうか?
401デフォルトの名無しさん (ワッチョイ fd92-yGJ5)
2017/06/01(木) 10:32:18.97ID:WGT9ssZa0 昌?お前も相当モウロクしてるぞ
402デフォルトの名無しさん (スプッッ Sdea-rE82)
2017/06/01(木) 11:36:05.93ID:KuXsowWKd ワロタw
403デフォルトの名無しさん (オッペケ Sr3d-J6tP)
2017/06/01(木) 12:37:41.54ID:97W8lGpzr そういえば「日」が三つだった気がしてきた
俺もモウロクしたようだ
俺もモウロクしたようだ
404デフォルトの名無しさん (ワッチョイ f97a-ydpN)
2017/06/01(木) 12:42:26.29ID:3mGWxYm60 結局何が正解なんだよ
405デフォルトの名無しさん (オッペケ Sr3d-J6tP)
2017/06/01(木) 12:45:46.15ID:97W8lGpzr >>369に対してはN4659のAnnex D(D13.1)が正解
C++20で使えなくなる可能性があることを理解した上で使えということ
C++20で使えなくなる可能性があることを理解した上で使えということ
406デフォルトの名無しさん (JP 0H49-zUMb)
2017/06/01(木) 14:18:15.64ID:gpnYGtb7H >>398
えっと、何て言えばいいのかな?
最初から最後まで自分で定義するとして、std::iteratorをそっくりそのまま書き写したmy_iteratorみたいなのを継承する、
あるいは、それと同等な方法でイテレータを定義するのは問題ないのかな、と思って質問しました。
自分で定義したとしても、std::iteratorに付随するもの、たとえばiterator_categoryやvalue_typeを使えば、
それは廃止されるstd::iteratorを使ってるのと大差ないですよね? そういうのはいいのかな?と思って
えっと、何て言えばいいのかな?
最初から最後まで自分で定義するとして、std::iteratorをそっくりそのまま書き写したmy_iteratorみたいなのを継承する、
あるいは、それと同等な方法でイテレータを定義するのは問題ないのかな、と思って質問しました。
自分で定義したとしても、std::iteratorに付随するもの、たとえばiterator_categoryやvalue_typeを使えば、
それは廃止されるstd::iteratorを使ってるのと大差ないですよね? そういうのはいいのかな?と思って
407デフォルトの名無しさん (アウアウカー Sad5-6jhl)
2017/06/01(木) 15:08:52.32ID:HHU/Lqsma >>406
はい問題ないです
むしろstd::iteratorはイテレータを自作するためのただのヘルパーであって、
要求される型や関数を持っていればイテレータを作るために特定のクラスを継承しなきゃいけないとかはないです
はい問題ないです
むしろstd::iteratorはイテレータを自作するためのただのヘルパーであって、
要求される型や関数を持っていればイテレータを作るために特定のクラスを継承しなきゃいけないとかはないです
408デフォルトの名無しさん (スプッッ Sd03-RGMd)
2017/06/09(金) 13:26:36.03ID:kptJBH71d int hoge={1,2,3,};
配列末尾のカンマは許されてますか?
配列末尾のカンマは許されてますか?
409デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/09(金) 18:17:06.50ID:rw1qC18c0 paiza.IO, codepad などに、ブラウザで書き込んで、確かめれば?
410デフォルトの名無しさん (スプッッ Sd03-RGMd)
2017/06/09(金) 18:38:38.05ID:kptJBH71d 確かめてもその環境では出来ると言う事しかわからないので
411デフォルトの名無しさん (ワッチョイ 5be4-7qWT)
2017/06/09(金) 18:41:26.39ID:xFMqJagR0 コンパイラの実装が全てにおいて正しい
412デフォルトの名無しさん (ワッチョイ 7de3-OlK+)
2017/06/09(金) 19:06:37.15ID:wCNNb6AH0 自分が持ってる本では配列末尾に全てカンマがありますよ
許されてるはず!
許されてるはず!
413片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-QXxp)
2017/06/09(金) 19:49:56.35ID:qv1T8kMNd414デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/09(金) 19:51:04.81ID:rw1qC18c0 最後に余計なカンマが付いているのだから、普通はコンパイルエラーになるはずだろ
それがエラーにならないのなら、その構文は正しい
それがエラーにならないのなら、その構文は正しい
415デフォルトの名無しさん (スプッッ Sd03-RGMd)
2017/06/09(金) 20:01:26.03ID:kptJBH71d416デフォルトの名無しさん (ワッチョイ 239f-B5qv)
2017/06/09(金) 20:23:58.14ID:sC6dNq1X0417デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/09(金) 20:40:16.86ID:a4wVaQJCr418デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/09(金) 21:34:47.00ID:z6XGzBger そういえば>>408のコードにはどこにも配列が登場しないな
一行目はフェイクなのだろうか
一行目はフェイクなのだろうか
419デフォルトの名無しさん (ワッチョイ 23af-lnJR)
2017/06/09(金) 23:23:34.86ID:1XB8pDxy0 >>408
n4659によるとあり
n4659によるとあり
420デフォルトの名無しさん (ワッチョイ e511-AY/e)
2017/06/10(土) 09:38:34.51ID:0q4Mq4Kr0 で、結局hogeに何が格納されるの?
421デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/10(土) 12:33:50.86ID:6tSezeKAM422デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/10(土) 13:30:36.94ID:gXoQdix00 規格的にはどうなのか調べる気にもならないけど
Cでも80年台の終わりくらいには俺の知ってる全てのコンパイラで最後のカンマ許されるようになってたと思う
今C/C++でエラーにするコンパイラなんてあるのかね?
もしあるならそんなコンパイラは色々ヤバいから使わないほうがいい
Cでも80年台の終わりくらいには俺の知ってる全てのコンパイラで最後のカンマ許されるようになってたと思う
今C/C++でエラーにするコンパイラなんてあるのかね?
もしあるならそんなコンパイラは色々ヤバいから使わないほうがいい
423デフォルトの名無しさん (ワッチョイ 23af-lnJR)
2017/06/10(土) 13:43:34.09ID:WtrsYPXN0 だから規格的にもありだって
424デフォルトの名無しさん (ワッチョイ 0be3-yTT2)
2017/06/10(土) 13:44:18.36ID:WN3QcUIY0 列挙部分をスクリプトか何かで生成する時に、
ちょっと楽ちんだなと思った事はある
ちょっと楽ちんだなと思った事はある
425デフォルトの名無しさん (ワッチョイ 85e2-sCoW)
2017/06/10(土) 13:50:38.86ID:QncEdRe90 カニハン第二版にも、要素末尾後ろのカンマは合法て書いてあったような。
まさにスクリプティング時の便宜を図るため。
ただ、C89とかだとenumだけは許されてなかった気が。
まさにスクリプティング時の便宜を図るため。
ただ、C89とかだとenumだけは許されてなかった気が。
426デフォルトの名無しさん (ワッチョイ 23aa-D9zB)
2017/06/10(土) 18:16:29.78ID:HZN1Em+70 「規定クラス」とかいかにも公式に定義されてるっぽい言葉を使いながら
抽象化だよわかるだろ、とか
省略だよわかるだろ、とか
抽象化だよわかるだろ、とか
省略だよわかるだろ、とか
427デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/10(土) 19:06:50.38ID:xSl9wCDP0 規格と簡単に言うけど、日本の産業界には言語規格を知っている人が、そもそもいない。
MISRA-C の日本の委員会の人でも、規格は知らないから、
欧州に問い合わせながら、本を書いたらしい
日本の産業界から、そうそうたるメンバーを集めても、規格は謎だらけ
日本では規格に詳しいのは、C++ 標準化委員会の、
ドワンゴ江添亮、επιστημη(エピステーメー)ぐらいだろ
MISRA-C の日本の委員会の人でも、規格は知らないから、
欧州に問い合わせながら、本を書いたらしい
日本の産業界から、そうそうたるメンバーを集めても、規格は謎だらけ
日本では規格に詳しいのは、C++ 標準化委員会の、
ドワンゴ江添亮、επιστημη(エピステーメー)ぐらいだろ
428デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/10(土) 19:17:08.33ID:1OFjIP+40429デフォルトの名無しさん (ワントンキン MMa3-iq9z)
2017/06/10(土) 19:36:14.26ID:vzLlMkbRM >>427
エピスは全然詳しくないだろ…
エピスは全然詳しくないだろ…
430デフォルトの名無しさん (アウアウカー Sae1-lnJR)
2017/06/10(土) 19:46:32.90ID:b/uhZ0uFa431デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/10(土) 20:03:52.30ID:xSl9wCDP0 規格は、JISなどが翻訳しただけで、翻訳者には意味は分からない。
規格から、その条文に合った例題を、誰も作れない
だから、MISRA-C の日本委員会では、その条文を説明するための、
例題を作っては、欧州に問い合わせて、間違いが無いかどうかを確かめている
文章一つでも、解釈の仕方が一杯あるから、例題が無いと説明できない
法律の民法などと同じ。
TAC、伊藤塾など各社が、法律を解釈する受験本を、たくさん出しているだろ。
最高裁の判決を載せて、条文がどう解釈されたか、書いているのと同じ
規格だけがあって、それを読んでも、どうにもならない。
MISRA-C みたいに産業界から、数十人が集まって議論しても、条文の意図が分からない
規格から、その条文に合った例題を、誰も作れない
だから、MISRA-C の日本委員会では、その条文を説明するための、
例題を作っては、欧州に問い合わせて、間違いが無いかどうかを確かめている
文章一つでも、解釈の仕方が一杯あるから、例題が無いと説明できない
法律の民法などと同じ。
TAC、伊藤塾など各社が、法律を解釈する受験本を、たくさん出しているだろ。
最高裁の判決を載せて、条文がどう解釈されたか、書いているのと同じ
規格だけがあって、それを読んでも、どうにもならない。
MISRA-C みたいに産業界から、数十人が集まって議論しても、条文の意図が分からない
432デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/10(土) 20:32:33.27ID:1OFjIP+40433デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/10(土) 20:40:48.55ID:yn1b1oYyr mainの戻りのvoidが規格違反かどうかについて「otherwise」という表現の解釈で議論が始まってしまうレベルのウンコ文書
もとの英文が宜しくない
もとの英文が宜しくない
434デフォルトの名無しさん (ブーイモ MM43-ww+S)
2017/06/10(土) 21:35:35.18ID:657mt0+/M >>427
俺ですら自腹で買った規格書持ってるけど何言ってんの?
俺ですら自腹で買った規格書持ってるけど何言ってんの?
435デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/10(土) 21:51:00.66ID:yn1b1oYyr さすがに>>430-431の後にこのレスは
日本語読解力に問題があると言わざるを得ない
日本語読解力に問題があると言わざるを得ない
436デフォルトの名無しさん (アウアウカー Sae1-lnJR)
2017/06/10(土) 22:22:04.21ID:b/uhZ0uFa >>431
法律と違って意図は分からなくてもいいだろ、曖昧な表現は困るが
意図がわからないとプログラミング上困る条文って具体的にどこだよ
曖昧な表現もそりゃあるとはいってもほんの一部だろ
それにたとえ委員会の人でもその曖昧な表現がどちらの意味なのか個人で決められるのか?って話
結局規格に明文化されたものが全てだろ
あと間違いがないか確認の問い合わせをするのは規格作ろうとしてるなら普通だと思うんだけど、とくにMISRA-Cの目的や内容からすれば
法律と違って意図は分からなくてもいいだろ、曖昧な表現は困るが
意図がわからないとプログラミング上困る条文って具体的にどこだよ
曖昧な表現もそりゃあるとはいってもほんの一部だろ
それにたとえ委員会の人でもその曖昧な表現がどちらの意味なのか個人で決められるのか?って話
結局規格に明文化されたものが全てだろ
あと間違いがないか確認の問い合わせをするのは規格作ろうとしてるなら普通だと思うんだけど、とくにMISRA-Cの目的や内容からすれば
437デフォルトの名無しさん (ワッチョイ 957f-D9zB)
2017/06/10(土) 22:41:16.36ID:Pg73dp6X0 >>427の「言語規格を知っている」の定義をはっきりさせないまま議論を始めちゃう人は
規格を語るのに向いてない。
規格を語るのに向いてない。
438デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/10(土) 23:22:49.03ID:xSl9wCDP0 たぶん、あいまいなのは、規格が抽象的な表現で書いているからだろ。
いざ具体的な事例を出した場合に、それが正しいのか悪いのか、簡単には分からない
だから、MISRA-C みたいな解釈・説明書が必要になる
型変換のルールでも、潜在型とか、そういう用語を定義して、
わかりやすく説明している
法律でも、最高裁の判例を、数十年研究して解釈している。
それでも判事が7対6で、ひやひやもので決まった判例もある。
数年後に判断したら、結論が変わる
規格の抜け穴・論理矛盾などを研究するには、数十年かかる。
規格書を読んで、分かるようなものじゃない。
簡単にわかるのは、表面上の事だけ
いざ具体的な事例を出した場合に、それが正しいのか悪いのか、簡単には分からない
だから、MISRA-C みたいな解釈・説明書が必要になる
型変換のルールでも、潜在型とか、そういう用語を定義して、
わかりやすく説明している
法律でも、最高裁の判例を、数十年研究して解釈している。
それでも判事が7対6で、ひやひやもので決まった判例もある。
数年後に判断したら、結論が変わる
規格の抜け穴・論理矛盾などを研究するには、数十年かかる。
規格書を読んで、分かるようなものじゃない。
簡単にわかるのは、表面上の事だけ
439デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/11(日) 00:38:45.98ID:TqhJN8GP0 規格なんて実際に使うコンパイラの仕様に比べたらゴミみたいなものだからな
最近は規格に敬意を払う傾向が強まってきたと思うけど
最近は規格に敬意を払う傾向が強まってきたと思うけど
440デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/11(日) 00:40:20.06ID:GyEdwZPXr 例えば「トリビアル」の定義はわかっても意図がわからないとコンテナーのテンプレートを正しく書くことは難しい
だが挫折の多くは文面の解釈よりも「正しい仕様を確認しようとしたが規格を読んでもわからなかった」パターンに思える
だが挫折の多くは文面の解釈よりも「正しい仕様を確認しようとしたが規格を読んでもわからなかった」パターンに思える
441デフォルトの名無しさん (ワッチョイ 5be4-OlK+)
2017/06/11(日) 00:47:50.47ID:orY9bj1l0 コンパイルできないコードに価値は無い
コンパイラの方が全てにおいて正しい
コンパイラの方が全てにおいて正しい
442デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/11(日) 03:24:02.05ID:/4sxfWxQ0 分からない時に、規格書を読んでも、分からない
具体的な用例集が必要。
法律で言えば、具体的な判決
こう書いたら間違いで、これが正しいみたいな例。
だから規格書から、その用例集を作るのに、長い研究期間がいる
そういう意味で、MISRA-C のように、多くの企業が参加して、研究すべき。
製品の品質を担保すべき
具体的な用例集が必要。
法律で言えば、具体的な判決
こう書いたら間違いで、これが正しいみたいな例。
だから規格書から、その用例集を作るのに、長い研究期間がいる
そういう意味で、MISRA-C のように、多くの企業が参加して、研究すべき。
製品の品質を担保すべき
443デフォルトの名無しさん (ワッチョイ 5be4-OlK+)
2017/06/11(日) 03:58:12.87ID:orY9bj1l0 それ言語設計者とコンパイラ開発者にしか価値無いよね
444デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/11(日) 08:09:11.36ID:q49UmmFG0 そもそも MISRA は規格の解説書じゃないし
ワッチョイ 0baa-BUW4 は壮大に勘違いしてる
ワッチョイ 0baa-BUW4 は壮大に勘違いしてる
445デフォルトの名無しさん (ワッチョイ 859a-1pl6)
2017/06/11(日) 09:54:14.55ID:IXRoGBtM0 >>438
MISRA-C はどこで読めるのか?
MISRA-C はどこで読めるのか?
446デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/11(日) 11:09:38.17ID:TqhJN8GP0 ググることも出来ないやつには永遠に読めない
読む必要ないけど
読む必要ないけど
447デフォルトの名無しさん (ワッチョイ 8b97-sCoW)
2017/06/11(日) 15:09:26.57ID:qjl5AbWq0 MISRA-Cは、正式ルートだと金出して買うしかないよね。
ドラフト無料とかもなかった気がする。
ドラフト無料とかもなかった気がする。
448デフォルトの名無しさん (ワッチョイ 356d-Rt+9)
2017/06/11(日) 17:44:56.04ID:bT5ki42c0 MISRA-C はときとして理不尽な要求をしている気がする
449デフォルトの名無しさん (ワッチョイ 2311-W6lL)
2017/06/11(日) 18:01:31.88ID:q49UmmFG0 理不尽に見えるけど高信頼性のためには我慢してねって言うスタンスだから
450デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/11(日) 18:34:49.88ID:r6AQJQ0Cr サイトのサーバー証明書もマトモに管理できない低能が高信頼性を語るとか、冗談にもほどがある
451デフォルトの名無しさん (ブーイモ MM43-ViKn)
2017/06/12(月) 00:14:27.30ID:0xg96Y9iM C++さん、とんでもない機能を追加してしまう
http://hitomi.2ch.net/test/read.cgi/poverty/1497172293/
http://hitomi.2ch.net/test/read.cgi/poverty/1497172293/
452デフォルトの名無しさん (ワッチョイ 15ea-b8DM)
2017/06/12(月) 01:43:06.58ID:ZIdu3+Lh0 ウィンドウクラスって、何に使うん?
453デフォルトの名無しさん (ワッチョイ 0baa-BUW4)
2017/06/12(月) 21:03:27.92ID:VDG2Ae3J0 MISRA-C 無しの、C言語は、製品に使ってはいけない。
品質が出荷レベルに達していないから
トヨタは、5% しか、MISRA-C を守っていないと聞いた。
100条なら、95で違反
品質が出荷レベルに達していないから
トヨタは、5% しか、MISRA-C を守っていないと聞いた。
100条なら、95で違反
454デフォルトの名無しさん (ワッチョイ 5be4-7qWT)
2017/06/12(月) 21:08:37.51ID:SpclLUXp0 サブセットで十分なケースもある
455デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/12(月) 21:21:24.13ID:t42bNJ0Ar この句読点の使い方は得てしてリアルガイジ
MISRAとかいうのを信仰する奴とガイジとの相関は高いとみた
MISRAとかいうのを信仰する奴とガイジとの相関は高いとみた
456デフォルトの名無しさん (ワッチョイ 23f0-D9zB)
2017/06/12(月) 23:44:06.01ID:kzKhR3Vv0 そもそも無矛盾のルール体系は構築できないのでは
457デフォルトの名無しさん (ワッチョイ 23aa-D9zB)
2017/06/13(火) 00:13:09.07ID:eF+wsRwS0 んなこたあない
458デフォルトの名無しさん (アウアウカー Sae1-lnJR)
2017/06/13(火) 02:09:41.46ID:LBvGuQYWa 無矛盾な公理体系は自己自身の無矛盾性を証明できない、
ってだけで無矛盾な体系は作れないとはいってない
ってだけで無矛盾な体系は作れないとはいってない
459デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/13(火) 07:35:05.39ID:siDT5/O8M MISRA なんて有り体に言えばベストプラクティスだしね
守らなくても正しいソフトは作れる
ただバカが多いところだと守らせればありがちなバグが防げるって言う効果はある
守らなくても正しいソフトは作れる
ただバカが多いところだと守らせればありがちなバグが防げるって言う効果はある
460デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/13(火) 18:24:46.63ID:+1XB2sfj0 ベストプラクティスというよりは古文書
てかここはC++スレなんだが
てかここはC++スレなんだが
461デフォルトの名無しさん (ワッチョイ 5b23-O+Nk)
2017/06/13(火) 18:34:11.65ID:oGIP5B9w0 配列の中身で重複している要素をカウントしてカウントが一番多かった要素を取り出す
っていうプログラム作りたいので知恵貸してください
{1,2,2,5,2,5}だったら2が取り出せるみたいな
っていうプログラム作りたいので知恵貸してください
{1,2,2,5,2,5}だったら2が取り出せるみたいな
462デフォルトの名無しさん (ワッチョイ eb23-D9zB)
2017/06/13(火) 18:42:01.39ID:nMRvtxJa0 「宿題は自分でやりなさい」
先生たちもこのスレ監視してるからなw
先生たちもこのスレ監視してるからなw
463デフォルトの名無しさん (ワッチョイ 5b23-O+Nk)
2017/06/13(火) 18:56:37.43ID:oGIP5B9w0 宿題じゃねーよw
調べても重複削除くらいしかみつけられない
調べても重複削除くらいしかみつけられない
464デフォルトの名無しさん (スッップ Sd43-3C0K)
2017/06/13(火) 19:08:11.56ID:P4se3SJtd mapを使うとかソートしてしまうとか?
465デフォルトの名無しさん (ワッチョイ 5be4-7qWT)
2017/06/13(火) 19:09:11.39ID:n4I5+XGH0 日本語で書いてあるとおりのことをすればいいだけなのだが
466デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/13(火) 20:25:19.98ID:siDT5/O8M467デフォルトの名無しさん (ワッチョイ 859a-1pl6)
2017/06/13(火) 20:39:09.12ID:8eM6ZKoF0 で,MISRA-C をどこで見ればいいの?売っているの?
468デフォルトの名無しさん (スップ Sd43-ryUj)
2017/06/13(火) 20:56:19.09ID:gcB4XgG8d >>461
データやリソースによって適した実装方法が異なるな
データやリソースによって適した実装方法が異なるな
469デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/13(火) 20:56:21.35ID:+1XB2sfj0 だからそんなに考古学に興味あるんならググれよ
公式でPDF版£15で売ってるよ
繰り返し言うがここはC++スレだ
公式でPDF版£15で売ってるよ
繰り返し言うがここはC++スレだ
470デフォルトの名無しさん (ワッチョイ dba6-LgKm)
2017/06/13(火) 23:06:22.18ID:apqWicsH0 クソなコードしか思いつかなかった
http://ideone.com/3IBm07
http://ideone.com/3IBm07
471デフォルトの名無しさん (ワッチョイ 23af-Fz1p)
2017/06/13(火) 23:56:53.24ID:G30+7Gz/0 それだと最大要素見つけるのに無駄に2ループするからこの方がよくね
http://ideone.com/AMCSuy
http://ideone.com/AMCSuy
472デフォルトの名無しさん (ワッチョイ 239f-AL/g)
2017/06/14(水) 06:51:42.68ID:Bb4iazb50 どうもしっくり逝かんな
http://ideone.com/mH3sLq
http://ideone.com/mH3sLq
473デフォルトの名無しさん (ドコグロ MM51-W6lL)
2017/06/14(水) 06:58:07.10ID:xl37jtKCM >>469
ひょっとして MISRA-C++ の存在も知らない老害さん?
ひょっとして MISRA-C++ の存在も知らない老害さん?
474デフォルトの名無しさん (オッペケ Sr71-LgKm)
2017/06/14(水) 07:13:45.93ID:97YMYHupr 「: public binary_function」
はて、規格のDで見たような
はて、規格のDで見たような
475デフォルトの名無しさん (ワッチョイ 859a-ryUj)
2017/06/14(水) 07:42:18.88ID:ROBFB8K40 >>461
配列の要素数 : n
要素の値の範囲 : m
計算オーダー
ソート&カウント : n log n
固定配列のカウンタ : max(n, m)
map のカウンタ : n log m
単純な2重ループ : n^2
かな
配列の要素数 : n
要素の値の範囲 : m
計算オーダー
ソート&カウント : n log n
固定配列のカウンタ : max(n, m)
map のカウンタ : n log m
単純な2重ループ : n^2
かな
476デフォルトの名無しさん (ワッチョイ 956f-ujiq)
2017/06/14(水) 07:44:57.00ID:mEpEgwpO0 >>473
話のコンテキストも無視して突然MISRA-C++を出してくるとか頭大丈夫ですか?
話のコンテキストも無視して突然MISRA-C++を出してくるとか頭大丈夫ですか?
477デフォルトの名無しさん (ワッチョイ 859a-ryUj)
2017/06/14(水) 07:51:46.28ID:ROBFB8K40 てことで、
配列の取りうる値が狭い場合、狭い範囲に変換できる場合はvectorによるカウンタ
取りうる値の種類が少ないことはわかっているが、値からインデックスに簡単に変換できない場合はmapによるカウンタ
一般的にはソート&カウント
による実装が良いのでは?
配列の取りうる値が狭い場合、狭い範囲に変換できる場合はvectorによるカウンタ
取りうる値の種類が少ないことはわかっているが、値からインデックスに簡単に変換できない場合はmapによるカウンタ
一般的にはソート&カウント
による実装が良いのでは?
478デフォルトの名無しさん (ワッチョイ 859a-ryUj)
2017/06/14(水) 08:01:12.72ID:ROBFB8K40 ソート&カウント の場合
配列の値の大小比較の定義が必要
非破壊の場合は配列と同じサイズのメモリが必要
vectorカウンタの場合
配列の値からインデックス値に簡単に変換可能である必要がある
インデックス値分 x カウンタサイズ のメモリが必要
setカウンタの場合
配列の値の大小比較の定義が必要
配列の値の種類分 x setのノード のメモリが必要
単純2重ループの場合
一番要求することが少ない
配列の値が同じかどうか判別出来れば良い
配列の値の大小比較の定義が必要
非破壊の場合は配列と同じサイズのメモリが必要
vectorカウンタの場合
配列の値からインデックス値に簡単に変換可能である必要がある
インデックス値分 x カウンタサイズ のメモリが必要
setカウンタの場合
配列の値の大小比較の定義が必要
配列の値の種類分 x setのノード のメモリが必要
単純2重ループの場合
一番要求することが少ない
配列の値が同じかどうか判別出来れば良い
479デフォルトの名無しさん (ワッチョイ 859a-ryUj)
2017/06/14(水) 08:07:23.67ID:ROBFB8K40 配列の値のコピーのコストが大きい場合
などを考えるとさらに別の方法が考えられる
などを考えるとさらに別の方法が考えられる
480デフォルトの名無しさん (ドコグロ MM13-W6lL)
2017/06/14(水) 08:16:37.97ID:SzLmysikM >>476
話のコンテキストも理解できてない老害乙
話のコンテキストも理解できてない老害乙
481デフォルトの名無しさん (ブーイモ MM43-O+Nk)
2017/06/14(水) 08:32:13.08ID:1Ro22eP7M みんなありがとう
やってみる
やってみる
482デフォルトの名無しさん (スプッッ Sd51-RGMd)
2017/06/14(水) 08:51:35.81ID:JEM2dfxwd いえいえ
483デフォルトの名無しさん (ワッチョイ e3af-VSCS)
2017/06/15(木) 02:16:45.12ID:Kprt2KgZ0 vectorのテンプレートに当てるクラスにはデフォルトコンストラクが必須なんでしたっけ?
484デフォルトの名無しさん (ワッチョイ 274b-eVPi)
2017/06/15(木) 02:57:56.05ID:WlVNVHON0 いいえ
03まではコピーできること
11からは破棄できること
が最低限の要件
03まではコピーできること
11からは破棄できること
が最低限の要件
485デフォルトの名無しさん (ワンミングク MMaa-JSHy)
2017/06/15(木) 05:30:50.78ID:HQ6fr84VM >>483
必要だよ
必要だよ
486デフォルトの名無しさん (アウアウカー Sa33-yC4D)
2017/06/15(木) 09:11:26.58ID:qU51R9EPa 使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね
必要な場面が思い付かんし
必要な場面が思い付かんし
487デフォルトの名無しさん (ワントンキン MMaa-JSHy)
2017/06/15(木) 10:49:56.10ID:cMMWNP19M std::vector<MyObject> v;
これMyObjectにデフォルトコンストラクタないとコンパイルできなくない?
これMyObjectにデフォルトコンストラクタないとコンパイルできなくない?
488デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/15(木) 11:01:39.88ID:aq+4THbXr >>484
根拠は?
根拠は?
489デフォルトの名無しさん (アウアウカー Sa33-yC4D)
2017/06/15(木) 11:19:41.25ID:qU51R9EPa490デフォルトの名無しさん (ワッチョイ 274b-eVPi)
2017/06/15(木) 11:23:27.43ID:L9OZrg3x0 >>487
その例のその時点ではvの要素数は0でMyObjectは一つも構築されない
そしてテンプレートの性質として要求されない部分の実体化はされないので
実際には呼ばれない部分のコードがコンパイルエラーにはなる問題にもあたらない
その例のその時点ではvの要素数は0でMyObjectは一つも構築されない
そしてテンプレートの性質として要求されない部分の実体化はされないので
実際には呼ばれない部分のコードがコンパイルエラーにはなる問題にもあたらない
491デフォルトの名無しさん (スップ Sd7a-FPX1)
2017/06/15(木) 11:50:20.24ID:T9X0CufJd その理屈だとデストラクタも不要になるが、実際はデストラクタは必要
492デフォルトの名無しさん (ワッチョイ 8baa-vAEL)
2017/06/15(木) 12:01:45.59ID:UVt8Gat10 >>491
そりゃvectorのデストラクタで要素のデストラクタが呼ばれる(テンプレートのインスタンス化が行われる)んだから
そりゃvectorのデストラクタで要素のデストラクタが呼ばれる(テンプレートのインスタンス化が行われる)んだから
493デフォルトの名無しさん (スプッッ Sd3b-Ir2K)
2017/06/15(木) 12:32:05.19ID:TLt9F5bfd >>486
resizeは?
resizeは?
494デフォルトの名無しさん (ワッチョイ 56e4-l3wW)
2017/06/15(木) 12:35:16.93ID:st+URCRI0 そのあたりのことはどっかに書いてあった
495デフォルトの名無しさん (ワントンキン MMaa-vAEL)
2017/06/15(木) 12:42:14.22ID:HosU7tvHM >>493
こぴ
こぴ
496デフォルトの名無しさん (ワントンキン MMaa-vAEL)
2017/06/15(木) 12:43:54.29ID:HosU7tvHM >>493
コピーコンストラクタがあれば引数2つの方が使える
コピーコンストラクタがあれば引数2つの方が使える
497デフォルトの名無しさん (スップ Sd7a-FPX1)
2017/06/15(木) 12:53:22.51ID:T9X0CufJd498デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/15(木) 14:19:10.82ID:aq+4THbXr 「使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね」
↓
「resizeは?」
↓
「コピーコンストラクタがあれば引数2つの方が使える」
これがイケヌマと言うやつか
↓
「resizeは?」
↓
「コピーコンストラクタがあれば引数2つの方が使える」
これがイケヌマと言うやつか
499デフォルトの名無しさん (ワッチョイ bb11-yC+1)
2017/06/15(木) 15:13:39.32ID:0w39VBC10 333/+C/333
}[amo]*7*
%/$/@0000/*/"2BTOLA"~~
}[amo]*7*
%/$/@0000/*/"2BTOLA"~~
500デフォルトの名無しさん (ワッチョイ bb11-yC+1)
2017/06/16(金) 08:33:30.61ID:YhgtDNjG0 <<<C++>>>
}
000-0
001-EK,L,A%&*17&>>=<HUFMO#$BUZ,DOL%$,"LTAR"===7,2&$%\72<&\\7>3%,
002-"GYU","LA"
***"AGILA"***
GOJU-$+$%7.2!$^±%WOLR%,,,
}
000-0
001-EK,L,A%&*17&>>=<HUFMO#$BUZ,DOL%$,"LTAR"===7,2&$%\72<&\\7>3%,
002-"GYU","LA"
***"AGILA"***
GOJU-$+$%7.2!$^±%WOLR%,,,
501デフォルトの名無しさん (ワッチョイ 8baa-vAEL)
2017/06/16(金) 09:54:15.30ID:rTwb7eLL0 >>498
え?resizeするのにデフォルトコンストラクタ必要じゃないよね?
え?resizeするのにデフォルトコンストラクタ必要じゃないよね?
502デフォルトの名無しさん (スップ Sd7a-FPX1)
2017/06/16(金) 10:48:52.10ID:+l0M7jEud なんで必要じゃないと思うんだか
503デフォルトの名無しさん (スップ Sd7a-FPX1)
2017/06/16(金) 10:51:59.72ID:+l0M7jEud resizeとサイズ指定のコンストラクタ
この2個は必要
他に必要なのが有るかは知らない
この2個は必要
他に必要なのが有るかは知らない
504デフォルトの名無しさん (ササクッテロレ Spab-O+YK)
2017/06/16(金) 13:52:01.14ID:uEZP+i89p ぜんぜんわからない
僕たちは雰囲気でvectorを使っている
僕たちは雰囲気でvectorを使っている
505デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/16(金) 18:08:28.52ID:h6HoRUoNr506デフォルトの名無しさん (ワッチョイ 8b9a-FPX1)
2017/06/16(金) 19:00:27.85ID:exN5gWxV0507デフォルトの名無しさん (ワッチョイ 8b9a-FPX1)
2017/06/16(金) 19:06:58.58ID:exN5gWxV0 おれも流れを無視して書いてみよう
自分でvectorを作ってみると躓くのが、メモリのアロケートや解放を伴わない、指定位置に対してのコンストラクタやデストラクタの呼び出し
ここは他の実装をカンニングしてしまった
他は特に難しいところはなく、ひたすらメンバー関数を作る作業
vectorはlistやmapに比べると作るのが簡単
自分でvectorを作ってみると躓くのが、メモリのアロケートや解放を伴わない、指定位置に対してのコンストラクタやデストラクタの呼び出し
ここは他の実装をカンニングしてしまった
他は特に難しいところはなく、ひたすらメンバー関数を作る作業
vectorはlistやmapに比べると作るのが簡単
508デフォルトの名無しさん (ワントンキン MMaa-vAEL)
2017/06/16(金) 20:32:33.08ID:1QoHt37uM むしろ >>486 がresizeの要素数だけ指定したときにデフォルトコンストラクタが使われるということぐらい解ってて言ってるように見えるんだけどな。C++98まではオーバーロードですらない全く同じメンバーだったわけで。
文脈読んでないのはどっちなんだろうね。
文脈読んでないのはどっちなんだろうね。
509デフォルトの名無しさん (スップ Sd7a-FPX1)
2017/06/16(金) 20:58:35.54ID:+l0M7jEud イミフ
解説よろしく
解説よろしく
510デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/16(金) 23:20:55.70ID:jqjhiiMFr 単に思ったことを書いてみたすごい例は>>494だな
読み返すと深いものがある
読み返すと深いものがある
511デフォルトの名無しさん (ワッチョイ 96a6-H4RH)
2017/06/18(日) 14:45:58.32ID:pAWWq9QO0 エピス何とかさんって
エピステーメー 迷惑 でググると出てくる人?
エピステーメー 迷惑 でググると出てくる人?
512デフォルトの名無しさん (ワントンキン MMaa-JSHy)
2017/06/18(日) 15:04:30.19ID:maGnATACM そう
513デフォルトの名無しさん (ブーイモ MMaf-4fPX)
2017/06/18(日) 17:37:06.92ID:qo9bGziFM ぐぐって最初に出てきた記事を読んできたけど、どっちもどっちな感じだなあ。
ただ一つ言えるのは、エピスの記事はいつもcounterが題材でとてもつまらない。
ただ一つ言えるのは、エピスの記事はいつもcounterが題材でとてもつまらない。
514デフォルトの名無しさん (ワッチョイ aeaa-vAEL)
2017/06/19(月) 02:44:16.89ID:vY2cw8HX0 ぐぐって最初に出てきた記事を読んできたけど、どちらかというと記事の主の方が苦しい言い訳してる感じがするなぁ。
ただ一つ言えるのは、てらているでえぴすてーめーの解答見てると質問者の理解を手助けするような解答にはみえないから好きではない。
ただ一つ言えるのは、てらているでえぴすてーめーの解答見てると質問者の理解を手助けするような解答にはみえないから好きではない。
515デフォルトの名無しさん (ワッチョイ 96af-VSCS)
2017/06/19(月) 04:56:20.14ID:ClMyuu520 namespace A{
static int hoge;
}
class B
{
public:
static int fuga;
};
これらを複数のcppファイルでincludeした場合、
A::hogeはファイルスコープごとにできて
B::fugaはファイルスコープ間で共通
で合ってる?
static int hoge;
}
class B
{
public:
static int fuga;
};
これらを複数のcppファイルでincludeした場合、
A::hogeはファイルスコープごとにできて
B::fugaはファイルスコープ間で共通
で合ってる?
516デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/19(月) 08:39:44.53ID:S/voQGxrr 現規格ではfile scopeという言葉の定義が無いことに気付いた
517デフォルトの名無しさん (ワッチョイ ba9f-C7l9)
2017/06/19(月) 08:46:39.99ID:9+UYKLHD0 hogeの方はextern付けないと大量生成されるぞ
518デフォルトの名無しさん (ワッチョイ ba9f-C7l9)
2017/06/19(月) 08:47:46.44ID:9+UYKLHD0 あ、staticか…わざとやっているのか
519デフォルトの名無しさん (ワッチョイ 136f-98cR)
2017/06/19(月) 10:43:51.86ID:m1J/TEED0520デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/19(月) 10:53:54.51ID:S/voQGxrr 注意事項は有るとして、合っているかと言えば合っていると思ったのだがはて
521デフォルトの名無しさん (ワッチョイ 96af-VSCS)
2017/06/19(月) 11:20:57.70ID:ClMyuu520 >>519
namespace Aが付けばstaticはファイルに依存しないクラスのstaticメンバーみたいになるということですかね?
namespace Aが付けばstaticはファイルに依存しないクラスのstaticメンバーみたいになるということですかね?
522片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdda-adb9)
2017/06/19(月) 11:40:33.07ID:UZhaSadud 変数のアドレスを確認すればわかるじゃん。
523デフォルトの名無しさん (アウアウカー Sa33-yC4D)
2017/06/19(月) 12:39:33.09ID:Edn2ErbFa524デフォルトの名無しさん (ワッチョイ 96af-VSCS)
2017/06/19(月) 12:43:52.17ID:ClMyuu520 ですよね
ありがとうございます
ありがとうございます
525デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/19(月) 16:50:18.24ID:OcegvzUdr526デフォルトの名無しさん (スッップ Sdda-FPX1)
2017/06/19(月) 17:22:49.29ID:0iIdkSRqd さすがににそれはテスト方法が悪い
527デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/19(月) 19:46:59.76ID:OcegvzUdr >>526
undefined behaviorとno diagnostics requiredだらけの言語で「アドレス確認すればわかる」とだけ言うのはあまりに安易な助言ではないか、と言っているのであって
確認方法の良し悪しには興味が無い
undefined behaviorとno diagnostics requiredだらけの言語で「アドレス確認すればわかる」とだけ言うのはあまりに安易な助言ではないか、と言っているのであって
確認方法の良し悪しには興味が無い
528デフォルトの名無しさん (ワッチョイ 8b9a-FPX1)
2017/06/19(月) 19:56:58.85ID:QZxUhfYw0 お前が何に興味があるかなんてまったく興味がない
529デフォルトの名無しさん (アウアウカー Sa33-C4gc)
2017/06/19(月) 21:31:25.95ID:/bUZDhU4a530デフォルトの名無しさん (ブーイモ MM97-4fPX)
2017/06/20(火) 23:15:54.41ID:Mr4YEhWoM >>514
そもそも苦しい言い訳すらできない事案はwebページに掲載してないだろうしなぁ
そもそも苦しい言い訳すらできない事案はwebページに掲載してないだろうしなぁ
531デフォルトの名無しさん (ワッチョイ 1311-H4RH)
2017/06/21(水) 12:51:52.91ID:+NLKQqoi0532デフォルトの名無しさん (ワッチョイ 7a15-yC+1)
2017/06/21(水) 16:13:27.27ID:w7AAKRwP0 >>529
質問に必要なのは回答であって議論じゃない。
議論が建設的であろうがなかろうが質問に対する反応としては不適当だ。
回答が不十分だっていうことならそれは質問者が対話を重ねていくべきことで、
やみくもに話題を広げていく行為はそれこそ場をかき乱すだけだよ。
質問を元にした話題で雑談したっていいと思うが、
質問に対しては質問の回答を返すのが合理的な姿勢で、
先回りしてまで手取り足取り教えてやるような板じゃなかろう。
ム板が殺伐してるのは普通のこと。
質問に必要なのは回答であって議論じゃない。
議論が建設的であろうがなかろうが質問に対する反応としては不適当だ。
回答が不十分だっていうことならそれは質問者が対話を重ねていくべきことで、
やみくもに話題を広げていく行為はそれこそ場をかき乱すだけだよ。
質問を元にした話題で雑談したっていいと思うが、
質問に対しては質問の回答を返すのが合理的な姿勢で、
先回りしてまで手取り足取り教えてやるような板じゃなかろう。
ム板が殺伐してるのは普通のこと。
533デフォルトの名無しさん (オッペケ Srab-H4RH)
2017/06/21(水) 23:22:10.09ID:rrguzdDtr534デフォルトの名無しさん (ワッチョイ 9f3d-SU2+)
2017/06/22(木) 18:59:54.46ID:RmXtROOS0 templateのstaticメンバの初期化(実体化)についてわかる人、
教えてもらえないでしょうか。
次のようなクラス構成があります
template<typename T> class A {
public:
A() : foo(NULL) {}
...
void * foo;
};
template<typename T> class B {
public:
...
static A<T> bar;
};
class C : public B<C> {
public:
...
};
ここで、B<C>::barを実体化しないといけないので
1) 以下のように書くとVC++では問題ない
template<> A<C> B<C>::bar;
2) 以下のように書くとclang(xcode)では問題ない
template<> A<C> B<C>::bar = {};
3) GCC 4.9では1)でコンパイルは通るが実体化されない。
ということで、GCCでどう書いたらビルドが通るか教えてください。
よろしくお願いします。m(_ _)m
教えてもらえないでしょうか。
次のようなクラス構成があります
template<typename T> class A {
public:
A() : foo(NULL) {}
...
void * foo;
};
template<typename T> class B {
public:
...
static A<T> bar;
};
class C : public B<C> {
public:
...
};
ここで、B<C>::barを実体化しないといけないので
1) 以下のように書くとVC++では問題ない
template<> A<C> B<C>::bar;
2) 以下のように書くとclang(xcode)では問題ない
template<> A<C> B<C>::bar = {};
3) GCC 4.9では1)でコンパイルは通るが実体化されない。
ということで、GCCでどう書いたらビルドが通るか教えてください。
よろしくお願いします。m(_ _)m
535デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/22(木) 19:26:04.75ID:Pj60YbTlr >template<> A<C> B<C>::bar;
本当に実体化をしようとしているのか、明示的な実体化が必要なのか疑問だ
template<…> X →テンプレート定義
template<…> X<Y> →テンプレート定義(部分特殊化)
template<> X<…> →フルの特殊化
template X<…> →明示的実体化
X<…> →使うことで暗黙の実体化
本当に実体化をしようとしているのか、明示的な実体化が必要なのか疑問だ
template<…> X →テンプレート定義
template<…> X<Y> →テンプレート定義(部分特殊化)
template<> X<…> →フルの特殊化
template X<…> →明示的実体化
X<…> →使うことで暗黙の実体化
536デフォルトの名無しさん (ワッチョイ 9f3d-SU2+)
2017/06/22(木) 19:46:14.05ID:RmXtROOS0 >>535
レスありがとうございます。
実際のコードでは、AとBはそれぞれのヘッダファイルにすべて記述され、
Cのみcppでコード生成しています。1)及び2)はCのソース内に記述しています。
このため、スペシャライズは不要な筈ですが、B内で定義しているstatic変数は
Bのクラス内で使用しているため、実体化が必要です。
bar自体はコンストラクタがあるので、普通のstatic変数のように書けば
良いのではないかと思うのですが…。
何か勘違いしてるんですかね?
レスありがとうございます。
実際のコードでは、AとBはそれぞれのヘッダファイルにすべて記述され、
Cのみcppでコード生成しています。1)及び2)はCのソース内に記述しています。
このため、スペシャライズは不要な筈ですが、B内で定義しているstatic変数は
Bのクラス内で使用しているため、実体化が必要です。
bar自体はコンストラクタがあるので、普通のstatic変数のように書けば
良いのではないかと思うのですが…。
何か勘違いしてるんですかね?
537デフォルトの名無しさん (ワッチョイ 9f3d-SU2+)
2017/06/22(木) 20:07:59.54ID:RmXtROOS0 >>534です、連投すいません。
どうやら解決したようです、デバッグしてみないと本当に解決しているか
どうかはわかりませんが(^^;
stackoverflowにヒントがありました。
https://stackoverflow.com/questions/2342550/static-member-initialization-for-specialized-template-class
// needs a copy constructor!
template<> Type Class<Arguments>::member = Type();
コピーコンストラクタで無理やり実体を作るという…。
vc、llvm、gccでそれぞれ書き方が違うとは、やな世の中になったもんだw
どうやら解決したようです、デバッグしてみないと本当に解決しているか
どうかはわかりませんが(^^;
stackoverflowにヒントがありました。
https://stackoverflow.com/questions/2342550/static-member-initialization-for-specialized-template-class
// needs a copy constructor!
template<> Type Class<Arguments>::member = Type();
コピーコンストラクタで無理やり実体を作るという…。
vc、llvm、gccでそれぞれ書き方が違うとは、やな世の中になったもんだw
538デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/22(木) 20:44:12.75ID:Pj60YbTlr539デフォルトの名無しさん (ワッチョイ 374b-ckEx)
2017/06/22(木) 20:51:33.36ID:6MphhRRE0 >>534
> 3) GCC 4.9では1)でコンパイルは通るが実体化されない。
実体化されないの意味がよくわからんが
B::barの定義がないからだろ
ttps://wandbox.org/permlink/dK2e1pFJRGqDvw6G
> 3) GCC 4.9では1)でコンパイルは通るが実体化されない。
実体化されないの意味がよくわからんが
B::barの定義がないからだろ
ttps://wandbox.org/permlink/dK2e1pFJRGqDvw6G
540デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/22(木) 21:50:59.77ID:Pj60YbTlr >>534
>1) 以下のように書くとVC++では問題ない
>template<> A<C> B<C>::bar;
これはVisual C++が規格の14.7.3段落13を正しく実装していないためで
2)の書き方が正しい
>1) 以下のように書くとVC++では問題ない
>template<> A<C> B<C>::bar;
これはVisual C++が規格の14.7.3段落13を正しく実装していないためで
2)の書き方が正しい
541デフォルトの名無しさん (ワッチョイ 9f3d-SU2+)
2017/06/22(木) 21:52:32.77ID:RmXtROOS0542デフォルトの名無しさん (ワッチョイ 7f91-yPlv)
2017/06/24(土) 13:41:09.22ID:u+Yuz9bZ0 配列に格納された行列同士の乗算がしたいんだけどさ
EigenのMapってこれ、コンパイル時に行列の行数・列数が決まってない時はどうやって利用するもんなの?
http://eigen.tuxfamily.org/dox/group__TutorialMapClass.html
Vector型に変更したりしてたら遅くなっちゃうだろうし・・・・どうやるんだろ・・・・
EigenのMapってこれ、コンパイル時に行列の行数・列数が決まってない時はどうやって利用するもんなの?
http://eigen.tuxfamily.org/dox/group__TutorialMapClass.html
Vector型に変更したりしてたら遅くなっちゃうだろうし・・・・どうやるんだろ・・・・
543デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/24(土) 16:50:39.64ID:1xYcuW8pd >>542
ろくに見ずに答えるけど、テンプレートパラメータを明示的に与えられないの?
ろくに見ずに答えるけど、テンプレートパラメータを明示的に与えられないの?
544デフォルトの名無しさん (ブーイモ MMbf-Cfyt)
2017/06/24(土) 17:52:02.95ID:UzNhAedeM サンプルみた感じ、Dynamicっていうキーワードがあるみたいだけど
545デフォルトの名無しさん (ワッチョイ 9f32-LvKX)
2017/06/25(日) 14:15:18.57ID:ogKde9930 union aaa{
uint8_t byte[ 5 ];
struct bit_t {
uint32_t b0 : 5;
uint32_t b1 : 5;
uint32_t b2 : 5;
uint32_t b3 : 5;
uint32_t b4 : 5;
uint32_t b5 : 5;
uint32_t b6 : 5;
uint32_t b7 : 5;
}bit;
};
union bbb{
struct bit_t {
uint32_t b0 : 5;
uint32_t b1 : 5;
uint32_t b2 : 5;
uint32_t b3 : 5;
uint32_t b4 : 5;
uint32_t b5 : 5;
uint32_t b6 : 5;
uint32_t b7 : 5;
}bit;
uint8_t byte[ 5 ];
};
const aaa a = { 66, 77, 88, 99, 11 };
const bbb b = { a.bit.b0, a.bit.b1, a.bit.b2, a.bit.b3, a.bit.b4, a.bit.b5, a.bit.b6, a.bit.b7 };
bが{66,77,88,35,11}となってaと一致しません。何故ですか
uint8_t byte[ 5 ];
struct bit_t {
uint32_t b0 : 5;
uint32_t b1 : 5;
uint32_t b2 : 5;
uint32_t b3 : 5;
uint32_t b4 : 5;
uint32_t b5 : 5;
uint32_t b6 : 5;
uint32_t b7 : 5;
}bit;
};
union bbb{
struct bit_t {
uint32_t b0 : 5;
uint32_t b1 : 5;
uint32_t b2 : 5;
uint32_t b3 : 5;
uint32_t b4 : 5;
uint32_t b5 : 5;
uint32_t b6 : 5;
uint32_t b7 : 5;
}bit;
uint8_t byte[ 5 ];
};
const aaa a = { 66, 77, 88, 99, 11 };
const bbb b = { a.bit.b0, a.bit.b1, a.bit.b2, a.bit.b3, a.bit.b4, a.bit.b5, a.bit.b6, a.bit.b7 };
bが{66,77,88,35,11}となってaと一致しません。何故ですか
546デフォルトの名無しさん (ワッチョイ f796-Cfyt)
2017/06/25(日) 15:01:36.01ID:WDBvKZ4J0 byte境界でないと配置できない環境なんじゃないの?
547デフォルトの名無しさん (ワッチョイ 9f32-MYey)
2017/06/25(日) 15:16:55.26ID:vsjTFzMZ0 uint32_tに5ビットずつ詰めてるからだろ
548デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S)
2017/06/25(日) 15:37:16.30ID:ogZvFgu/0 普通は単に unsigned b0:5: と書くべき
ビットフィールドに32tとか余計なモノ乗っけると解釈がおかしくなる
ビットフィールドに32tとか余計なモノ乗っけると解釈がおかしくなる
549デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S)
2017/06/25(日) 15:41:35.21ID:ogZvFgu/0 あとは副作用でpackアラインが1になってないから無理矢理境界作ってコンパイラが揃えようとしているとか
550デフォルトの名無しさん (ワッチョイ bfe4-Nep8)
2017/06/25(日) 15:51:48.24ID:k9VtfbZw0 共用体の統一初期化記法のことはよくわからないけどちゃんとコンストラクタを書けば解決するのでは
https://wandbox.org/permlink/Fzd26GrwxkCJ5NmL
https://wandbox.org/permlink/Fzd26GrwxkCJ5NmL
551デフォルトの名無しさん (ワッチョイ ffaa-4OJu)
2017/06/25(日) 16:07:57.97ID:Y80WzbX30 C++を、10年以上勉強してから、共用体を使え
そもそも、初心者が使い道を知らないだろ
そもそも、初心者が使い道を知らないだろ
552デフォルトの名無しさん (ワッチョイ 9fc3-NIhq)
2017/06/25(日) 17:09:07.72ID:/94nlHOp0 >>545
なぜ一致すると思うのかをまず説明すべきではないかね?
なぜ一致すると思うのかをまず説明すべきではないかね?
553デフォルトの名無しさん (ワッチョイ 1f91-ZLad)
2017/06/25(日) 17:14:35.54ID:CENP8UyG0 99: 1100011
35: _100011
何度かやってみると、合う時もあるな
35: _100011
何度かやってみると、合う時もあるな
554デフォルトの名無しさん (ワッチョイ 9f32-LvKX)
2017/06/25(日) 19:00:42.60ID:ogKde9930 uint32_tをuint64_tに変えたら一致するようになりました
ヒントになります?
ヒントになります?
555デフォルトの名無しさん (ワッチョイ 9faf-6L/r)
2017/06/25(日) 19:15:35.89ID:0WoCYScE0 VC++2015で調べたらaaa,bbbは8byteでbit_tのメンバーは
b0: 0ビット目
b1: 5ビット目
b2: 10ビット目
b3: 15ビット目
b4: 20ビット目
b5: 25ビット目
b6: 32ビット目
b7: 37ビット目
に配置されてた
b6から配置がずれてて30bit目と31bit目がbit_tでは使われてない
なのでbでbit_tを使って初期値をセットしてもこの2bitの値は不定になる
この2bitが両方とも0の時4byte目は35、
30bit目が0で31bit目が1の時99になる
b0: 0ビット目
b1: 5ビット目
b2: 10ビット目
b3: 15ビット目
b4: 20ビット目
b5: 25ビット目
b6: 32ビット目
b7: 37ビット目
に配置されてた
b6から配置がずれてて30bit目と31bit目がbit_tでは使われてない
なのでbでbit_tを使って初期値をセットしてもこの2bitの値は不定になる
この2bitが両方とも0の時4byte目は35、
30bit目が0で31bit目が1の時99になる
556はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-LvKX)
2017/06/25(日) 23:08:48.14ID:y0reYziw0 英語を読むのがだるいので JIS の仕様を見てみた。
まずは C99 (に相当する JISX3010:2003) の 6.7.2.1 にはこうある。
> 処理系は、ビットフィールドを保持するに十分な大きさの任意のアドレス付け可能な記憶域単位を割り付けてよい。
> 十分な領域が残っている場合、構造体内のビットフィールドの直後に続く別のビットフィールドは、同じ単位の隣接したビットに詰め込まなければならない。
> 十分な領域が残っていない場合、入り切らなかったビットフィールドを次の単位に入れるか、又は隣接した単位の境界をまたがせるかは、処理系定義とする。
> 単位内のビットフィールド割付けの順序 (上位から下位か又は下位から上位か) は、処理系定義とする。
この理屈にてらして >>555 を解釈すると、 VC++2015 での記憶域単位は 4 バイトで、ビットフィールドが単位に収まらなかった場合には次の単位に入れる
という選択を取っていることになる。
で、 C++03 (JISX3014:2003) ではどうかというと 9.6 にこうある。
> クラスオブジェクト内のビットフィールドの割り当て方は処理系定義とする。 ビットフィールドの境界調整は、処理系定義とする。 ビットフィールドは、何らかのアドレス取得可能な単位内に詰め込まれる。
> 参考 処理系によっては、ビットフィールドの割当て単位をまたがることもあるし、またがないこともある。 右から左に割り当てる処理系もあるし、左から右に割り当てる処理系もある。
この文章の「単位内に詰め込まれる」というのは C での規則にあるように記憶域単位をまたがない限り (次の単位に移らずに) 詰め込むという規則にも読
めるが、ちょっとよくわからない。 常識的に考えれば C より緩い規則ということはないだろうと思うんだけど……。
>>554
指定する型が割当て方に影響するような文面は見付けられなかった。
まずは C99 (に相当する JISX3010:2003) の 6.7.2.1 にはこうある。
> 処理系は、ビットフィールドを保持するに十分な大きさの任意のアドレス付け可能な記憶域単位を割り付けてよい。
> 十分な領域が残っている場合、構造体内のビットフィールドの直後に続く別のビットフィールドは、同じ単位の隣接したビットに詰め込まなければならない。
> 十分な領域が残っていない場合、入り切らなかったビットフィールドを次の単位に入れるか、又は隣接した単位の境界をまたがせるかは、処理系定義とする。
> 単位内のビットフィールド割付けの順序 (上位から下位か又は下位から上位か) は、処理系定義とする。
この理屈にてらして >>555 を解釈すると、 VC++2015 での記憶域単位は 4 バイトで、ビットフィールドが単位に収まらなかった場合には次の単位に入れる
という選択を取っていることになる。
で、 C++03 (JISX3014:2003) ではどうかというと 9.6 にこうある。
> クラスオブジェクト内のビットフィールドの割り当て方は処理系定義とする。 ビットフィールドの境界調整は、処理系定義とする。 ビットフィールドは、何らかのアドレス取得可能な単位内に詰め込まれる。
> 参考 処理系によっては、ビットフィールドの割当て単位をまたがることもあるし、またがないこともある。 右から左に割り当てる処理系もあるし、左から右に割り当てる処理系もある。
この文章の「単位内に詰め込まれる」というのは C での規則にあるように記憶域単位をまたがない限り (次の単位に移らずに) 詰め込むという規則にも読
めるが、ちょっとよくわからない。 常識的に考えれば C より緩い規則ということはないだろうと思うんだけど……。
>>554
指定する型が割当て方に影響するような文面は見付けられなかった。
557デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/25(日) 23:47:54.19ID:Tfx4tn9Gr >常識的に考えれば (中略) ないだろうと思う
訳:ボクは非常識です
訳:ボクは非常識です
558デフォルトの名無しさん (スップ Sd3f-VrB2)
2017/06/26(月) 00:18:40.72ID:mZAJ/HXWd トンチンカンな回答がほとんどで笑える
559デフォルトの名無しさん (ワッチョイ bfe4-Nep8)
2017/06/26(月) 00:21:57.68ID:yL9hwVgE0 正しい回答をお願いします
560デフォルトの名無しさん (スップ Sd3f-VrB2)
2017/06/26(月) 00:29:03.33ID:mZAJ/HXWd byteの40bitとbの40bitが違う位置だから (ほとんどの環境で)
561デフォルトの名無しさん (スップ Sd3f-VrB2)
2017/06/26(月) 00:32:01.19ID:mZAJ/HXWd 8個のbがbyteをカバーしていない
562デフォルトの名無しさん (スップ Sd3f-VrB2)
2017/06/26(月) 00:37:21.07ID:mZAJ/HXWd563デフォルトの名無しさん (ワッチョイ bfe4-Nep8)
2017/06/26(月) 01:00:43.63ID:yL9hwVgE0 そもそも専門的な質問は2chで聞くべきじゃないし
信頼できる専門書を買うべき
信頼できる専門書を買うべき
564デフォルトの名無しさん (ワッチョイ ffaa-4OJu)
2017/06/26(月) 01:09:10.53ID:RgMKiEkv0 共用体などは、C++を、10年以上勉強してから使え。
そもそも、初心者が使い道を知らないだろ
そもそも、5バイトは、40ビットだけど、
ビットフィールドが何バイトの領域に確保されるかも知らないのに、使うな。
処理系依存の機能を使うな
MISRA-C でも使用禁止だし、素人が使う共用体なんて、
バグだらけで製品で使えない
どの本にも、共用体を使った例など、載っていないだろ
そもそも、初心者が使い道を知らないだろ
そもそも、5バイトは、40ビットだけど、
ビットフィールドが何バイトの領域に確保されるかも知らないのに、使うな。
処理系依存の機能を使うな
MISRA-C でも使用禁止だし、素人が使う共用体なんて、
バグだらけで製品で使えない
どの本にも、共用体を使った例など、載っていないだろ
565デフォルトの名無しさん (ワッチョイ 9f89-RNzd)
2017/06/26(月) 01:26:24.49ID:YVNj3DlL0566デフォルトの名無しさん (ワッチョイ 374b-ckEx)
2017/06/26(月) 01:34:20.47ID:jY+d4s2A0567デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S)
2017/06/26(月) 01:50:32.70ID:/d8dR7Ut0 5bitづつだとどうしてもアドレス跨ぎが発生するからな
4bitづつなら収まるけど
4bitづつなら収まるけど
568デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/26(月) 08:14:37.12ID:g/kuRdPjr569デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/26(月) 20:30:39.48ID:g/kuRdPjr570デフォルトの名無しさん (ワッチョイ 9f1b-ZNvc)
2017/06/26(月) 20:36:59.50ID:cFoP2i7u0 規格的には処理系定義なので処理系のマニュアル等で確認して使うならNGではないな
571デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/26(月) 20:43:43.05ID:GM19K0OY0 >>551は質問の回答じゃないから
572デフォルトの名無しさん (ワッチョイ ffaa-4OJu)
2017/06/26(月) 23:25:57.41ID:RgMKiEkv0 共用体で、バイト配列とビットフィールドは、互換性がない型だから使えない。
最低でも、10年以上勉強していない者は、共用体でバグだらけになるから使うな
ビットフィールドのメモリ割付位置は、処理系依存だから、
他のOS・OSのビット数(32/64ビット)・他のコンパイラなどで使えない
また、コンパイラのバージョンアップで、再コンパイルするだけでも、
メモリ割付位置は変わるから、バグ有りで使えない
コンパイルエラーにならず、実行時エラーになるようなものは使えない
最低でも、10年以上勉強していない者は、共用体でバグだらけになるから使うな
ビットフィールドのメモリ割付位置は、処理系依存だから、
他のOS・OSのビット数(32/64ビット)・他のコンパイラなどで使えない
また、コンパイラのバージョンアップで、再コンパイルするだけでも、
メモリ割付位置は変わるから、バグ有りで使えない
コンパイルエラーにならず、実行時エラーになるようなものは使えない
573デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/26(月) 23:35:53.83ID:GM19K0OY0 なんかムキになってる
相変わらずズレてるね
相変わらずズレてるね
574デフォルトの名無しさん (ワッチョイ 9faa-ZLad)
2017/06/26(月) 23:55:54.69ID:NfcBoQUW0 失敗を通じてしか成長できないのにね
575デフォルトの名無しさん (ワッチョイ bfea-WW2k)
2017/06/27(火) 01:00:05.96ID:NwZhdH240 10年以上勉強さん流石ですw
576デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 08:01:35.53ID:bJ//gE7J0 10年勉強して >>572 か
残念な人
残念な人
577デフォルトの名無しさん (ワッチョイ d7d1-Rbtz)
2017/06/27(火) 10:18:29.05ID:XwCnx1+f0 for_eachを並列で高速化する場合
-D_GLIBCXX_PARALLEL
でopenmp使う場合と
#include <experimental/numeric>
の使う場合と
どっちが高速なの?
-D_GLIBCXX_PARALLEL
でopenmp使う場合と
#include <experimental/numeric>
の使う場合と
どっちが高速なの?
578デフォルトの名無しさん (ワッチョイ 17f3-PFpe)
2017/06/27(火) 10:35:07.84ID:TVfTial50 自分でも無意識のうちにやってたし、ネットのサンプルとかでもよくあるけど
厳密にはunsigned intのほうが相応しい場合でもintつかってるコードをよく見かけるが
いちいちintをunsigned intで宣言し直すのもあほらしいしマクロつかって
unsigned intを_u_intとかに置き換えて宣言するのもそこまでしなくてもいいんじゃないかとも思うし
そこらへんはテキトーでいいんっすかね・・・
厳密にはunsigned intのほうが相応しい場合でもintつかってるコードをよく見かけるが
いちいちintをunsigned intで宣言し直すのもあほらしいしマクロつかって
unsigned intを_u_intとかに置き換えて宣言するのもそこまでしなくてもいいんじゃないかとも思うし
そこらへんはテキトーでいいんっすかね・・・
579デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/27(火) 10:51:53.32ID:LPANs+0ed std::size_t じゃなくて?
580デフォルトの名無しさん (ワッチョイ d76f-ADZD)
2017/06/27(火) 11:30:31.53ID:DL/1tDv80 負の値を取らないからって「厳密にはunsigned intのほうが相応しい」とは俺は考えないな
intで済むならintにする
intで済むならintにする
581デフォルトの名無しさん (ワッチョイ f7ea-LvKX)
2017/06/27(火) 12:25:58.18ID:+aQQjqLh0 正の数しかとらない変数がまだ初期化されていないことを明示するために負の値(特に-1)を使うとか割とよくある。
582デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/27(火) 14:22:30.38ID:Gpx2Satod583デフォルトの名無しさん (ワッチョイ 1f91-ZLad)
2017/06/27(火) 14:33:30.02ID:ntBitUxx0 int? i;
が許されるのはC#だっけ?
が許されるのはC#だっけ?
584デフォルトの名無しさん (ワンミングク MM7f-Rrwd)
2017/06/27(火) 14:41:42.08ID:siPR+sC7M そもそもアドレス宣言と初期化は同時にしろって話だしね
585デフォルトの名無しさん (ワンミングク MM7f-Rrwd)
2017/06/27(火) 14:41:58.86ID:siPR+sC7M アドレス宣言ってなんだ
宣言ね
宣言ね
586デフォルトの名無しさん (ワッチョイ d76f-ADZD)
2017/06/27(火) 15:11:12.82ID:DL/1tDv80 >>582
std::size_tの本来の用途じゃない数値でも使つのか?それはちょっと
std::size_tの本来の用途じゃない数値でも使つのか?それはちょっと
587デフォルトの名無しさん (スッップ Sdbf-iOY8)
2017/06/27(火) 16:00:23.87ID:Gpx2Satod588デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:00:49.27ID:bJ//gE7J0 >>582
size_tだと64bit環境で64bitになるぞ
size_tだと64bit環境で64bitになるぞ
590デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:07:21.81ID:bJ//gE7J0 当然そういうコンパイラはある
Windows上だと過去の色々なしがらみなどからintが32bitなのが普通
Windows上だと過去の色々なしがらみなどからintが32bitなのが普通
591片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6)
2017/06/27(火) 19:08:30.52ID:OA/PxRyod ビット数が気になるなら、<cstdint>のint??_tやuint??_tを使えばいいやんけ。
592デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:09:53.97ID:bJ//gE7J0 厳密にはunsignedの方が相応しいってどういう場合を想定してる?
データサイズとかならunsignedの方が相応しいとも限らないよ
データサイズとかならunsignedの方が相応しいとも限らないよ
593デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:11:35.74ID:bJ//gE7J0594片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6)
2017/06/27(火) 19:15:41.98ID:OA/PxRyod その場合はintfast_t, uintfast_tを使う
595デフォルトの名無しさん (ワッチョイ bfe4-Nep8)
2017/06/27(火) 19:19:52.85ID:N0WooBY/0 データが持つ意味と型の振る舞いは極力一致させるべきで
型の振る舞いはできる限り制限するべき
負の値を取り得ないならunsignedにする
ローカル変数ならsignedでもいい
型の振る舞いはできる限り制限するべき
負の値を取り得ないならunsignedにする
ローカル変数ならsignedでもいい
>>590
え?そんなコンパイラが実在するの?
え?そんなコンパイラが実在するの?
597片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-pKS6)
2017/06/27(火) 19:33:33.64ID:OA/PxRyod >>596
64-bit Linuxとか使ったことねーのか?
64-bit Linuxとか使ったことねーのか?
599デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:51:35.91ID:bJ//gE7J0 特殊な例だとcharからlong longまで全部64bitとかあるぞ
もちろんPCではないけど
もちろんPCではないけど
600デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 19:52:40.24ID:bJ//gE7J0 こいつが噂のMZか
一人芝居の
一人芝居の
601デフォルトの名無しさん (アウアウウー Sa9b-h10b)
2017/06/27(火) 20:06:34.19ID:3pUMWgYLa602デフォルトの名無しさん (ワッチョイ 179a-VrB2)
2017/06/27(火) 20:10:45.68ID:bJ//gE7J0 x86の64bitモードは32bitの方が速い命令がある
キャッシュ容量とかメモリ帯域とかを考えても、絶対に32bitで足りるなら、32bitを選んだ方がいい
キャッシュ容量とかメモリ帯域とかを考えても、絶対に32bitで足りるなら、32bitを選んだ方がいい
603デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/27(火) 21:37:34.10ID:ExZegnFlr >こいつが噂のMZか
>一人芝居の
Qの一人芝居はまだ余興として見られるがもう一人のクソコテの一人芝居は痛々しくて見ていられない
>一人芝居の
Qの一人芝居はまだ余興として見られるがもう一人のクソコテの一人芝居は痛々しくて見ていられない
604デフォルトの名無しさん (ワッチョイ 9fc3-NIhq)
2017/06/28(水) 02:28:02.75ID:Irk2C7ZK0 >>595
型の振る舞いをできる限り制限するのは誤りを起こさない、起こしても明確なエラーにするのが目的だと思うんだけど、
符号なし整数型にそういった機能は無くて実際の助けにはならないから、こういう議論が起こる。
型の振る舞いをできる限り制限するのは誤りを起こさない、起こしても明確なエラーにするのが目的だと思うんだけど、
符号なし整数型にそういった機能は無くて実際の助けにはならないから、こういう議論が起こる。
605デフォルトの名無しさん (ワッチョイ d76f-ADZD)
2017/06/28(水) 04:29:23.47ID:matoew650 むしろsignedにしておけば不正に負の値が入れられた場合チェックしやすい
606デフォルトの名無しさん (ワッチョイ 9f89-RNzd)
2017/06/28(水) 07:46:44.59ID:Aii/VoAq0 符合つき整数との比較や算術演算した際に、warning出たり符合なしに変換されたりと面倒なことが多いから、定義域が非負という理由だけではわざわざ符合なしにはあまりしたくない。
607デフォルトの名無しさん (スプッッ Sd3f-oVeJ)
2017/06/28(水) 08:16:59.41ID:MovvcuP9d googleのスタイルだと整数は符号ありを使えってなってる
608デフォルトの名無しさん (スップ Sd3f-VrB2)
2017/06/28(水) 13:11:58.44ID:4LULrFdtd APIも64bitは符号ありが多い
609デフォルトの名無しさん (ワッチョイ 7f91-fiUu)
2017/06/28(水) 14:24:20.43ID:qTRul81R0 Vvector<vector<float>> tensor;
のようなテンソルを、1列にまとめて
void Vector_Func(vector<float> &v){}
ベクトルの関数の引数にしたいんだけどさ
これって、新たにVector<float>型のベクトルを定義してそこにベクトルの中身をコピーし、それを利用して関数を呼び出して、さらにもとのテンソルにコピーして戻すしかないのかな?
2度のコピーにかかる時間を短縮できる方法があったら誰か教えて!!!
のようなテンソルを、1列にまとめて
void Vector_Func(vector<float> &v){}
ベクトルの関数の引数にしたいんだけどさ
これって、新たにVector<float>型のベクトルを定義してそこにベクトルの中身をコピーし、それを利用して関数を呼び出して、さらにもとのテンソルにコピーして戻すしかないのかな?
2度のコピーにかかる時間を短縮できる方法があったら誰か教えて!!!
610デフォルトの名無しさん (ワッチョイ bfaf-7LQj)
2017/06/28(水) 14:26:13.68ID:+YCVI2Ik0 typedef vector<vector<float> > tensorf;
それとも右辺値参照的な話だろうか
それとも右辺値参照的な話だろうか
611デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S)
2017/06/28(水) 14:29:19.59ID:eX7vr1Kz0 参照になっているなら直接vを弄るだけでコピーする必要もないと思われ
612デフォルトの名無しさん (ワッチョイ d76f-ADZD)
2017/06/28(水) 15:12:35.77ID:matoew650 >>609
1列にまとめる必要があるという前提ならどうしようもない気がする
vector<vector<float>>を止めてデータの並びが最初から1列にまとまってるようなテンソルクラスを作るか、
どっかの行列ライブラリを転用するんだな
1列にまとめる必要があるという前提ならどうしようもない気がする
vector<vector<float>>を止めてデータの並びが最初から1列にまとまってるようなテンソルクラスを作るか、
どっかの行列ライブラリを転用するんだな
613デフォルトの名無しさん (ワッチョイ 9f9f-Yx6S)
2017/06/28(水) 16:00:31.95ID:eX7vr1Kz0 参照渡しでvが正常に得られるということは、vectorが値の参照を許容しているとも言える。
614デフォルトの名無しさん (ワンミングク MM7f-Rrwd)
2017/06/28(水) 16:46:10.90ID:cWs7iztoM >>609
iteratorパターンかrange viewのようなものを作る
iteratorパターンかrange viewのようなものを作る
615デフォルトの名無しさん (オッペケ Sr0b-jRIn)
2017/06/28(水) 18:00:52.06ID:lG20CtJar 612は健常者
>>597
その64bit Linux に乗っているコンパイラは何?
その64bit Linux に乗っているコンパイラは何?
617デフォルトの名無しさん (ササクッテロラ Sp71-kiAr)
2017/06/29(木) 22:16:27.01ID:3dQByb1op C++の数値計算のコード読んでくとreadmeにSiam journal って雑誌の引用見かける事がやたら多いんだけどc++やる人は必読の雑誌だったりします?
618デフォルトの名無しさん (ワッチョイ 016f-bKJX)
2017/06/30(金) 01:47:04.93ID:66+xb1tk0 C++ってより言語を問わず数値計算やる人だな
高速性が要求される数値計算はC++が使われることが多いってだけ
高速性が要求される数値計算はC++が使われることが多いってだけ
619デフォルトの名無しさん (ワッチョイ 46e4-ejav)
2017/06/30(金) 01:56:16.60ID:/WxXdso/0 まず数学力を鍛えたほうがいい
620デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/06/30(金) 08:34:53.69ID:2shJEbz+r これがアスペというやつだな
621デフォルトの名無しさん (ワッチョイ 921b-zTMA)
2017/07/01(土) 07:18:19.26ID:C6ffpB7m0 式テンプレートを勉強中です。
X(i) op Y(i)だけで結果が決まる場合はともかく
行列の逆行列のような一要素の計算に行列全部が影響するような計算を
こいつで実装する意味ってありまつか?
実装例とかあったら教えてください
X(i) op Y(i)だけで結果が決まる場合はともかく
行列の逆行列のような一要素の計算に行列全部が影響するような計算を
こいつで実装する意味ってありまつか?
実装例とかあったら教えてください
622デフォルトの名無しさん (ワッチョイ 06af-D66J)
2017/07/01(土) 07:25:20.19ID:qtP/3v2i0 意味というか行列の逆行列のij成分はij余因子を行列式で割った値だと言うことを知っていれば
NxN行列の逆行列の各成分はij余因子行列である(N-1)x(N-1)行列の行列式の計算になるから
数学的帰納法的にテンプレート化可能
NxN行列の逆行列の各成分はij余因子行列である(N-1)x(N-1)行列の行列式の計算になるから
数学的帰納法的にテンプレート化可能
623デフォルトの名無しさん (ワッチョイ 42aa-wjSU)
2017/07/01(土) 07:49:52.59ID:nS8nnQe50 >>622
君は説明がうまいね
君は説明がうまいね
624デフォルトの名無しさん (ワッチョイ 06af-D66J)
2017/07/01(土) 08:05:35.58ID:qtP/3v2i0 いやそれほどでも・・・///
625デフォルトの名無しさん (ワッチョイ 42aa-wjSU)
2017/07/01(土) 08:28:19.10ID:nS8nnQe50 式テンプレートで正項と負項をバサッと消し合うようなことができないかと考えて挫折したなあ
626デフォルトの名無しさん (ワッチョイ 921b-zTMA)
2017/07/01(土) 08:44:48.56ID:C6ffpB7m0 >>622
いや、その余因子を求めることも、そこから行列式を求めるにも、全行列値が必要になるわけだし、
そもそも、余因子行列式の計算はNxN->3x3までの変換が再帰的な計算でスタックを使いたおすことになるので、
ヒープに一時オブジェクトを使わずにすむといという式テンプレートのメリットが全くないんじゃないんですか?
だいたい余因子行列式の除算なんて効率悪すぎて数値計算じゃ使いませんよ。
話をはっきりさせるために、ここは逆行列計算をGauss-Jordanの掃き出し法に限定しましょうや。
>数学的帰納法的にテンプレート化可能
どういう意味です?
数学的帰納法とは、
i=1のときf(1)が成立する
i=nのときf(n)が成立すると仮定すれば
i=n+1のときも成立することを証明して、一般的にf(n)が成立とする
いや、その余因子を求めることも、そこから行列式を求めるにも、全行列値が必要になるわけだし、
そもそも、余因子行列式の計算はNxN->3x3までの変換が再帰的な計算でスタックを使いたおすことになるので、
ヒープに一時オブジェクトを使わずにすむといという式テンプレートのメリットが全くないんじゃないんですか?
だいたい余因子行列式の除算なんて効率悪すぎて数値計算じゃ使いませんよ。
話をはっきりさせるために、ここは逆行列計算をGauss-Jordanの掃き出し法に限定しましょうや。
>数学的帰納法的にテンプレート化可能
どういう意味です?
数学的帰納法とは、
i=1のときf(1)が成立する
i=nのときf(n)が成立すると仮定すれば
i=n+1のときも成立することを証明して、一般的にf(n)が成立とする
627デフォルトの名無しさん (ワッチョイ 921b-zTMA)
2017/07/01(土) 09:09:28.46ID:C6ffpB7m0 >>626
ちょっと、誤解を招きかねないんで、
余因子行列式が再帰的云々と書きましたが、
余因子に限らず、行列式の計算そのものが再帰的という意味です。
だから、行列式計算そのものがやたら時間がかかる。
大学の試験の答案とかで、途中点をかせぐために(連立方程式を解いて計算間違いするより加点が期待できる)、
余因子行列式/行列式
を明記したりしますが、このやり方はせいぜい手計算でできる4x4程度の話で、
それ以上だと掃き出し法に比較して極端に非効率ということです。
ちょっと、誤解を招きかねないんで、
余因子行列式が再帰的云々と書きましたが、
余因子に限らず、行列式の計算そのものが再帰的という意味です。
だから、行列式計算そのものがやたら時間がかかる。
大学の試験の答案とかで、途中点をかせぐために(連立方程式を解いて計算間違いするより加点が期待できる)、
余因子行列式/行列式
を明記したりしますが、このやり方はせいぜい手計算でできる4x4程度の話で、
それ以上だと掃き出し法に比較して極端に非効率ということです。
628デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/07/01(土) 09:32:16.00ID:T5yR4indr >>626
>効率悪すぎて数値計算じゃ使いませんよ
「式テンプレートの勉強」を「汎用数値計算ライブラリを式テンプレート化するための勉強」にすりかえられても…
>どういう意味です?
ヒント:回答者は日本語を正しく使えない
>効率悪すぎて数値計算じゃ使いませんよ
「式テンプレートの勉強」を「汎用数値計算ライブラリを式テンプレート化するための勉強」にすりかえられても…
>どういう意味です?
ヒント:回答者は日本語を正しく使えない
629デフォルトの名無しさん (ワッチョイ 42aa-wjSU)
2017/07/01(土) 10:10:34.74ID:nS8nnQe50 再帰的に→帰納的に→帰納法的に
jk
jk
630デフォルトの名無しさん (ワッチョイ 0111-WwN4)
2017/07/01(土) 12:42:17.52ID:RfHKhQjf0 数学用語はよくわからんけど
>行列の逆行列のような一要素の計算に行列全部が影響するような計算を
>こいつで実装する意味ってありまつか?
ない
というか式テンプレート勉強するというなら自分で軽く実装してみるべきだよ
↑の場合は速度がどうこう以前の問題だとわかるから
>行列の逆行列のような一要素の計算に行列全部が影響するような計算を
>こいつで実装する意味ってありまつか?
ない
というか式テンプレート勉強するというなら自分で軽く実装してみるべきだよ
↑の場合は速度がどうこう以前の問題だとわかるから
631デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/07/01(土) 13:26:13.77ID:T5yR4indr >再帰的に→帰納的に
これはひどい
再帰的と帰納的は関係ないし、数学的帰納法は帰納的でも帰納法でもない
>>こいつで実装する意味ってありまつか?
>ない
確かに質問に対する明確な回答なのだが、何かこう足りないような…
これはひどい
再帰的と帰納的は関係ないし、数学的帰納法は帰納的でも帰納法でもない
>>こいつで実装する意味ってありまつか?
>ない
確かに質問に対する明確な回答なのだが、何かこう足りないような…
632デフォルトの名無しさん (スッップ Sd62-TIEP)
2017/07/05(水) 14:15:27.50ID:/9Xtn5yvd scanfより速い標準入力ってない?
スペース区切りの大量のintをベクトルにいれたいんだけどループ回してscanfがどうやっても最速なのかな
スペース区切りの大量のintをベクトルにいれたいんだけどループ回してscanfがどうやっても最速なのかな
633デフォルトの名無しさん (ワッチョイ 6e1c-4/kT)
2017/07/05(水) 15:44:26.17ID:4h6UtxrL0 istream_iterator<int> first(cin), last;
vector<int> wish_of_632{first, last};
vector<int> wish_of_632{first, last};
634デフォルトの名無しさん (スッップ Sd62-TIEP)
2017/07/05(水) 16:39:36.49ID:/9Xtn5yvd >>633
試してみるサンクス
試してみるサンクス
635デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/07/05(水) 16:59:04.15ID:UhWlQCq1r Visual Studio 2017のリリースビルドで試したが>>633 の方法は倍ほど遅いような
636片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT)
2017/07/05(水) 17:16:22.28ID:2aUA7xnEd fread, fgets, getchar
637片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT)
2017/07/05(水) 17:22:18.00ID:2aUA7xnEd int n = 0;
if ('0' <= ch && ch <= '9') {
n *= 10;
n += ch - '0';
} else {
put_int(n);
n = 0;
}
if ('0' <= ch && ch <= '9') {
n *= 10;
n += ch - '0';
} else {
put_int(n);
n = 0;
}
638片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT)
2017/07/05(水) 17:31:38.49ID:2aUA7xnEd GetStdHandle(STD_INPUT_HANDLE)
639デフォルトの名無しさん (ワッチョイ c2f0-wjSU)
2017/07/05(水) 18:03:51.31ID:IVGCprss0 大量=一行10000個程度の数字が10000行ほど?
640デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/07/05(水) 18:09:07.25ID:UhWlQCq1r 自前が最速なのだろうが汎用性を考えるとお勧めできない
ある環境での適当な100万個の整数読み込み時間:
istream_iterator : 470ms
scanf : 230ms
fgetc+自前スペース解析+atoi :
175ms
最初に全部char配列に読み込み+片山式パース: 32ms
ある環境での適当な100万個の整数読み込み時間:
istream_iterator : 470ms
scanf : 230ms
fgetc+自前スペース解析+atoi :
175ms
最初に全部char配列に読み込み+片山式パース: 32ms
641デフォルトの名無しさん (ワッチョイ 46e4-ejav)
2017/07/05(水) 19:23:43.26ID:rZavNuQl0 何のチェックもしないscanf,printfのやり方が最速なのは自明
642デフォルトの名無しさん (ワッチョイ 6111-wjSU)
2017/07/05(水) 20:06:49.25ID:tZeoWZVY0643デフォルトの名無しさん (オッペケ Sr71-F+4p)
2017/07/05(水) 20:09:41.12ID:UhWlQCq1r644デフォルトの名無しさん (ワッチョイ 6111-wjSU)
2017/07/05(水) 21:04:30.49ID:tZeoWZVY0 >>643
てことは
fgetc+自前スペース解析+atoi :175ms
fread++自前スペース解析+atoi :80ms
読み込みのオーバーヘッドで175-80=95msロスしてるわけか
atoiは変換不能文字とか16進とかチェックしてるからその分遅くなるんだろう
自前で10進のみに特化させるのが一番なんだけどもな
てことは
fgetc+自前スペース解析+atoi :175ms
fread++自前スペース解析+atoi :80ms
読み込みのオーバーヘッドで175-80=95msロスしてるわけか
atoiは変換不能文字とか16進とかチェックしてるからその分遅くなるんだろう
自前で10進のみに特化させるのが一番なんだけどもな
645デフォルトの名無しさん (スップ Sdc2-Pf3w)
2017/07/05(水) 21:05:36.71ID:O+22iBefd 複数スレッドに分けてアセンブラの自作関数で回す
646デフォルトの名無しさん (スップ Sdc2-Pf3w)
2017/07/05(水) 21:07:40.11ID:O+22iBefd 各スレッドも、複数数値を並列で動かす
647デフォルトの名無しさん (スップ Sdc2-Pf3w)
2017/07/05(水) 21:08:36.26ID:O+22iBefd C++スレだった
すまんこ
すまんこ
648はつみつ餃子 ◆8X2XSCHEME (ワッチョイ 8215-CicO)
2017/07/05(水) 21:23:34.13ID:YH3wEyty0 どういう風に並列化できる?
649片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT)
2017/07/05(水) 21:26:33.09ID:2aUA7xnEd 処理すべきブロックに対して、ちょうどいい区切りで、等分割に近い分割をやって、それぞれを別々のスレッドで処理する。
スレッドがすべて終わったら、処理結果を結合する。
スレッドがすべて終わったら、処理結果を結合する。
650デフォルトの名無しさん (ワッチョイ 6111-wjSU)
2017/07/05(水) 21:28:54.47ID:tZeoWZVY0 スレッドもインラインアセンブラもC++の範疇だよ
ただIOはロックされるから解放待ちの時間が出来てしまう
ラインごとに随時読み込んでスレッド振り分けかな
パースに時間がかかるならそれも悪くないんだろうけど簡易atoi程度じゃ差は出にくい
ただIOはロックされるから解放待ちの時間が出来てしまう
ラインごとに随時読み込んでスレッド振り分けかな
パースに時間がかかるならそれも悪くないんだろうけど簡易atoi程度じゃ差は出にくい
651デフォルトの名無しさん (ワッチョイ c21b-8PSv)
2017/07/05(水) 21:34:38.31ID:slEXI2jh0 原理的にはブロッキングIOのファイル読み出しの待ち時間を有効に活用すれば
それが最速だけど並列化のオーバーヘッドを最小にしようと思ったら
OS毎あるいはファイルIOのライブラリ毎に特化しなきゃならない気がするので面倒くさい
それが最速だけど並列化のオーバーヘッドを最小にしようと思ったら
OS毎あるいはファイルIOのライブラリ毎に特化しなきゃならない気がするので面倒くさい
652片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd62-3ntT)
2017/07/05(水) 21:40:11.90ID:2aUA7xnEd #ifdef _WIN32
// Windowsの場合
...
#elif ...
// Windowsの場合
...
#elif ...
653デフォルトの名無しさん (ワッチョイ c99a-Pf3w)
2017/07/05(水) 23:16:04.44ID:icFnMa9s0 各スレッドも、前から順番にやってたら遅い
各スレッドのなかでも複数を同時にやらないと
例えば>>637みたいなのだと、各ステップが終わらないと次のステップに進めない
演算の遅延があるので、各演算ポートはスカスカになる
HTで少しはマシにはなるが、それでもスカスカ
整数演算は同時に3個〜4個出来るのだ
これを活かさないと
まあいずれにしろファイルなんか使ってたら読み込み時間がほとんどなので、ガリガリにアセンブラで組む価値もないけど
各スレッドのなかでも複数を同時にやらないと
例えば>>637みたいなのだと、各ステップが終わらないと次のステップに進めない
演算の遅延があるので、各演算ポートはスカスカになる
HTで少しはマシにはなるが、それでもスカスカ
整数演算は同時に3個〜4個出来るのだ
これを活かさないと
まあいずれにしろファイルなんか使ってたら読み込み時間がほとんどなので、ガリガリにアセンブラで組む価値もないけど
654デフォルトの名無しさん (ワッチョイ be91-DoE+)
2017/07/05(水) 23:24:23.81ID:9lrezxXx0 C++のすごい人お願い教えて!!!functionにメンバ関数を代入するにはどうすればいいのか全然わからんのや!!!
#include <iostream>
#include<functional>
using namespace std;
struct C{
int i=0;
function<void()> f;
void A(){ cout << i;}
void B(){
f=A;//ここで「reference to non-static member function must be called; did you mean to call it with no arguments?」
//関数A();をstaticにすればエラーは消えるものの、C::A()を呼びたいのではなくc.A();を呼び出したい
f();
}
};
void main(void){
C c;
c.B();
}
#include <iostream>
#include<functional>
using namespace std;
struct C{
int i=0;
function<void()> f;
void A(){ cout << i;}
void B(){
f=A;//ここで「reference to non-static member function must be called; did you mean to call it with no arguments?」
//関数A();をstaticにすればエラーは消えるものの、C::A()を呼びたいのではなくc.A();を呼び出したい
f();
}
};
void main(void){
C c;
c.B();
}
655デフォルトの名無しさん (ワッチョイ 06a6-F+4p)
2017/07/05(水) 23:25:58.77ID:pl4REjuI0 釣りならもっと議論の余地のあるネタにしろ
656デフォルトの名無しさん (ワッチョイ 06a6-F+4p)
2017/07/05(水) 23:36:21.55ID:pl4REjuI0 f = [this]{A();};
c.f = [&]{c.A();};
二度と来んなカス
c.f = [&]{c.A();};
二度と来んなカス
657デフォルトの名無しさん (ワッチョイ b7ea-rvkC)
2017/07/06(木) 09:30:12.16ID:x5DiEtc40 ファイル読み取りの待ち時間を別スレッドに割り当てるってのは、
誰もが考えつく話だけど、誰もがどうでもいいやと投げ出す話。
誰もが考えつく話だけど、誰もがどうでもいいやと投げ出す話。
658デフォルトの名無しさん (ワッチョイ f7e2-pw7F)
2017/07/06(木) 20:44:37.47ID:3RH7JsNg0 テンプレートクラスの継承で↓みたいなことをやりたいんですが
エラーが出てコンパイルが通りません
どこが間違っていますか?もしくはもっと良い方法はありますか?
template< typename T >
class alpha
{
private:
T mVar;
public:
alpha( T var ) : mVar( var ) {}
};
class bravo : public alpha< float >
{
public:
bravo( float var ) : alpha( var ) {}
};
エラーが出てコンパイルが通りません
どこが間違っていますか?もしくはもっと良い方法はありますか?
template< typename T >
class alpha
{
private:
T mVar;
public:
alpha( T var ) : mVar( var ) {}
};
class bravo : public alpha< float >
{
public:
bravo( float var ) : alpha( var ) {}
};
659デフォルトの名無しさん (ワッチョイ bfaf-VFUi)
2017/07/06(木) 20:54:42.22ID:1SuD/0Q50 コンパイル通りそうだけど
どんなエラー?
どんなエラー?
660デフォルトの名無しさん (ワッチョイ 976f-U373)
2017/07/06(木) 20:54:56.95ID:r4C+2lo90 なぜ肝心のエラーの内容を書かないのか
661デフォルトの名無しさん (ワッチョイ f7e2-pw7F)
2017/07/06(木) 20:58:24.06ID:3RH7JsNg0 658です
コンパイル通りました
すまんこ
コンパイル通りました
すまんこ
662デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/06(木) 21:29:46.08ID:RDUi9QjP0 ゆるさねえからな
663デフォルトの名無しさん (スプッッ Sd3f-RGC3)
2017/07/06(木) 22:12:30.80ID:8iMXbcNhd いえいえどういたしまして
664デフォルトの名無しさん (ワッチョイ 9f8f-gRQY)
2017/07/07(金) 00:01:47.76ID:lYH0c+880 ヽ(・ω・)/ズコー
665デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/10(月) 06:02:24.59ID:kxDJWNLg0 最近は3年毎に仕様改訂されてるC++なので
プロパティはどーなってるのカナー♪
RWPropertyて・・・
このハゲーーーー!!!
違うだろ
ち・が・う・だ・ろーーーー!!!
C#みたいに
class Body{
size_t Chimpo{ get; set;}
};
Body Oreno;
Oreno.Chimpo = 20;
cerr << Oreno.Chimpo <<"cm\n";
と簡単に書きたいんです・す・す
プロパティはどーなってるのカナー♪
RWPropertyて・・・
このハゲーーーー!!!
違うだろ
ち・が・う・だ・ろーーーー!!!
C#みたいに
class Body{
size_t Chimpo{ get; set;}
};
Body Oreno;
Oreno.Chimpo = 20;
cerr << Oreno.Chimpo <<"cm\n";
と簡単に書きたいんです・す・す
666デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/10(月) 06:06:24.38ID:kxDJWNLg0 テンプレートなんかでお茶濁し腐って
言語仕様として実装しろつってんだよハゲーーーー!!!
ぶち殺すぞ
言語仕様として実装しろつってんだよハゲーーーー!!!
ぶち殺すぞ
667デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/10(月) 06:07:31.30ID:NdIMybBN0 C#のあれ結局関数だから、下駄と雪駄書きなさい。
668デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/10(月) 06:21:29.79ID:kxDJWNLg0 はやっ
なんでこんな時間に2chなんかやってんだよ
なんでこんな時間に2chなんかやってんだよ
669デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/10(月) 06:42:08.85ID:NdIMybBN0 オマエモナー。
670デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/10(月) 06:48:01.08ID:kxDJWNLg0 俺は超早く寝て朝4:30に起きるように
生活習慣変えたから
生活習慣変えたから
671名無しさん@そうだ選挙に行こう! Go to vote! (ワッチョイ 9709-8gU5)
2017/07/10(月) 07:03:50.00ID:NdIMybBN0 俺は、夜行性なだけだ。
今日は用事があるからこのまま起きてるが。
今日は用事があるからこのまま起きてるが。
672デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/10(月) 11:54:33.30ID:okOc14zTd 単独プロパティでゲットセット?
あまり需要ないなあ。(個人の感想です)
あまり需要ないなあ。(個人の感想です)
673デフォルトの名無しさん (ワッチョイ 7f32-MxGc)
2017/07/11(火) 00:29:34.07ID:4iHLvMGp0 メンバ変数はない方がいいし、アクセスする必要がある時点で、隠蔽が崩れ始めてると思った方がいいと思う。
特定のパターン除けば、外からメンバ変数にアクセスしたいケースってすくなくない?
get/setは、リフレクションと命名規則に依存するフレームワークがあるから便利なのであって、c++には微妙じゃね?
特定のパターン除けば、外からメンバ変数にアクセスしたいケースってすくなくない?
get/setは、リフレクションと命名規則に依存するフレームワークがあるから便利なのであって、c++には微妙じゃね?
674デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/11(火) 01:25:20.72ID:7V5lebao0 自動実装のgetsetってpublicなメンバ変数と何が違うんだ
675デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/11(火) 01:29:35.46ID:CDrVRBQX0676デフォルトの名無しさん (ワッチョイ 174b-R6aQ)
2017/07/11(火) 01:48:50.09ID:8G8H3ksE0 ゲッタセッタとか使いたくなるような場面ならそもそもpublicな構造体使った方がいい説はある
677デフォルトの名無しさん (ワッチョイ 174b-R6aQ)
2017/07/11(火) 01:50:07.47ID:8G8H3ksE0 配列のlengthとかあったか
やっぱ取り消し
やっぱ取り消し
678デフォルトの名無しさん (ワッチョイ b7ea-rvkC)
2017/07/11(火) 06:32:58.41ID:nM0jXF630 関数オーバーロードやプロパティによるget/setの乱用は、メソッド名の文字列検索によるソースコード追跡ができなくなりかえって難読性が高まる。
679デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/11(火) 07:59:11.17ID:MCsEtOKi0 ↓のテンプレートとジェネリックの違い、にある
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics
トップ項目にある
・C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、算術演算子を呼び出すことはできません。
"算術演算子を呼び出すことはできません"ってどーいう意味っすか?
算術演算子って+-*/のこと?
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/generics/differences-between-cpp-templates-and-csharp-generics
トップ項目にある
・C# ジェネリック クラスでは、ユーザー定義演算子は呼び出すことができますが、算術演算子を呼び出すことはできません。
"算術演算子を呼び出すことはできません"ってどーいう意味っすか?
算術演算子って+-*/のこと?
680デフォルトの名無しさん (アウアウウー Sa5b-X9Wr)
2017/07/11(火) 08:03:15.77ID:ZtZ4WBZMa C++すれでC#聞かれても。。。
681デフォルトの名無しさん (ワッチョイ 9f9f-ieup)
2017/07/11(火) 08:05:01.05ID:bgByaxVg0 頭悪いからだろ
682デフォルトの名無しさん (ワッチョイ 1f1b-6//c)
2017/07/11(火) 08:18:43.46ID:MCsEtOKi0 >>680
あ、C#スレ行きます
あ、C#スレ行きます
683はつみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-rvkC)
2017/07/11(火) 18:08:51.11ID:W3h9V8nz0 理解が逆なんだよ。
関数の組 (ときには片方のこともある) を変数として抽象化しようとするのがプロパティであって、
メンバ変数のアクセサとしても使えるのは用例のひとつでしかない。
ゲッタとセッタが自動生成できるとかいうのはまた別問題だるぉおおお
関数の組 (ときには片方のこともある) を変数として抽象化しようとするのがプロパティであって、
メンバ変数のアクセサとしても使えるのは用例のひとつでしかない。
ゲッタとセッタが自動生成できるとかいうのはまた別問題だるぉおおお
684デフォルトの名無しさん (ワッチョイ 5711-rvkC)
2017/07/11(火) 18:54:25.62ID:dSS1j36W0 [][Tebla][]
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
}
000-"Yob*RtStrike"[%Kil\]MO,fla>%$9999VLTS
001-GYORLith"0\R"/"ESUBA"%$%
HADO-"EM","L","O","NU"###END
685デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/11(火) 19:07:21.76ID:DqTb1LDQd >>683
素人なので「変数として抽象化」ってとこがよくわからない
素人なので「変数として抽象化」ってとこがよくわからない
686デフォルトの名無しさん (ワッチョイ d796-rvkC)
2017/07/11(火) 19:17:50.67ID:dG3xud1d0 みなさんが複雑すぎて糞と言われるC++を使う理由を教えて下さい。
687デフォルトの名無しさん (ワンミングク MM7f-hrVG)
2017/07/11(火) 19:37:55.48ID:FP4c/tWpM688デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/11(火) 19:40:41.20ID:DqTb1LDQd >>686
言われるほど複雑じゃないから
言われるほど複雑じゃないから
689デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/11(火) 19:43:55.52ID:7V5lebao0 >>686
複雑すぎではないし糞でもないから
複雑すぎではないし糞でもないから
690デフォルトの名無しさん (ワッチョイ bfaf-VFUi)
2017/07/11(火) 19:45:13.43ID:YnoqV4V50 SDKがC++しかなくて仕方なく・・・
691デフォルトの名無しさん (ドコグロ MM2b-d65a)
2017/07/11(火) 20:21:24.75ID:Wcul0TB2M ネイティブコードを吐けるオブジェクト指向言語でメジャーな奴は C++ ぐらいしかないし
692デフォルトの名無しさん (ワッチョイ d796-rvkC)
2017/07/11(火) 21:14:29.35ID:dG3xud1d0 二人は複雑じゃないもん
二人は仕方なし
二人は仕方なし
693デフォルトの名無しさん (ワッチョイ 9f89-EAWM)
2017/07/11(火) 21:42:20.62ID:VLYeJXw20 いちばん使い慣れていて、使い勝手の良い道具だから。
694デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/11(火) 22:06:48.92ID:qjau/h5c0 複雑だが糞ではない
695デフォルトの名無しさん (ドコグロ MMbf-rPCP)
2017/07/11(火) 22:11:10.23ID:mCNEANh4M696デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/11(火) 22:18:58.63ID:DqTb1LDQd697デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/11(火) 22:30:22.09ID:7V5lebao0698デフォルトの名無しさん (ドコグロ MMbf-rPCP)
2017/07/11(火) 22:35:06.05ID:mCNEANh4M699デフォルトの名無しさん (ワッチョイ 176f-zXdO)
2017/07/11(火) 22:35:38.41ID:jUUyBjmf0 ビットローテーションについての相談です
今やりたいことは128文字の文字列を暗号化したい
その中で4バイトごとに区切って、4バイトごとにビットローテーションして暗号化を考えている
それの実現方法で悩んでいます
想定では右シフト
char a[128] = 文字列;
int x = a[0] << 24 + a[1] << 16 + a[2] << 8 + a[3];
// 下位2bitを上位2bitでtmp作成
int tmp = a[3] << 30;
x = x >> 2 + tmp;
これを繰り返す。
こんな感じのを考えたのだけどもっと良い方法はあるだろうか?
今やりたいことは128文字の文字列を暗号化したい
その中で4バイトごとに区切って、4バイトごとにビットローテーションして暗号化を考えている
それの実現方法で悩んでいます
想定では右シフト
char a[128] = 文字列;
int x = a[0] << 24 + a[1] << 16 + a[2] << 8 + a[3];
// 下位2bitを上位2bitでtmp作成
int tmp = a[3] << 30;
x = x >> 2 + tmp;
これを繰り返す。
こんな感じのを考えたのだけどもっと良い方法はあるだろうか?
700デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/11(火) 22:42:18.86ID:qjau/h5c0 環境依存で良いなら色々と思い付く
とりあえず、<<より+の方が優先度が高いので()を付けないと
| なら()は不要
コストは多分ほとんどの環境で同じ
8086とかだと | の方が速かったり
とりあえず、<<より+の方が優先度が高いので()を付けないと
| なら()は不要
コストは多分ほとんどの環境で同じ
8086とかだと | の方が速かったり
701片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v)
2017/07/11(火) 22:43:45.50ID:7IW2GOwZd >>699
数学や計算機科学を知らない素人が暗号化方式を考えるのは、おそらく無駄であり、出来たとしてもすぐハッキングされてしまう。
暗号化方式は、先人の研究によって評価されている手法を使うのが一般的。より良い暗号化方式を
考えるのは計算機科学者の仕事であり、プログラマーはその手法をプログラムに取り入れるだけだ。
数学や計算機科学を知らない素人が暗号化方式を考えるのは、おそらく無駄であり、出来たとしてもすぐハッキングされてしまう。
暗号化方式は、先人の研究によって評価されている手法を使うのが一般的。より良い暗号化方式を
考えるのは計算機科学者の仕事であり、プログラマーはその手法をプログラムに取り入れるだけだ。
702デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/11(火) 22:45:09.93ID:qjau/h5c0 どっちみち>>699の時点で環境依存だ
703デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/11(火) 22:46:16.83ID:qjau/h5c0704デフォルトの名無しさん (ワッチョイ bfaa-rPCP)
2017/07/11(火) 23:06:53.51ID:01bGuLEG0 >>703
家の鍵を素人が作るのは意味ない。
家の鍵を素人が作るのは意味ない。
705デフォルトの名無しさん (ワッチョイ 9f89-EAWM)
2017/07/11(火) 23:17:01.14ID:VLYeJXw20 質問者の目的が言語の学習とか、ちょっとしたテキストの難読化なのかもしれないのに、
外野が憶測で否定したり変な方向で議論を展開したり…。
相談室なのだから、もうちっと質問者の為になる話の流れにならないかなと思う。
外野が憶測で否定したり変な方向で議論を展開したり…。
相談室なのだから、もうちっと質問者の為になる話の流れにならないかなと思う。
706デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/11(火) 23:17:54.39ID:7V5lebao0707デフォルトの名無しさん (ワッチョイ 176f-zXdO)
2017/07/11(火) 23:21:49.34ID:jUUyBjmf0 >>705さんの言うとおりにテキストの難読化が目的です
bit演算に触れてみるのにちょっとした暗号化が良いレベルなのかなって思ってチャレンジしているところ
やっぱり演算子の優先度とかで注意点あるね
環境依存するのかな?この方法
bit演算に触れてみるのにちょっとした暗号化が良いレベルなのかなって思ってチャレンジしているところ
やっぱり演算子の優先度とかで注意点あるね
環境依存するのかな?この方法
708デフォルトの名無しさん (ワッチョイ 176f-zXdO)
2017/07/11(火) 23:23:13.79ID:jUUyBjmf0709デフォルトの名無しさん (オッペケ Srcb-sNxi)
2017/07/11(火) 23:33:54.38ID:L5b0rMHKr >環境依存するのかな?
むしろこのコードで動く環境が珍しいような
むしろこのコードで動く環境が珍しいような
710デフォルトの名無しさん (ワッチョイ 9f89-EAWM)
2017/07/11(火) 23:45:11.34ID:VLYeJXw20 char型が負数を表すかが環境依存。
負数を左シフトした結果が環境依存。
だからunsigned型の変数を使う。
負数を左シフトした結果が負数だったとして、それを加算したら想定してた結果にならないから、加算ではなくビットORを使う。
負数を左シフトした結果が環境依存。
だからunsigned型の変数を使う。
負数を左シフトした結果が負数だったとして、それを加算したら想定してた結果にならないから、加算ではなくビットORを使う。
711デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/11(火) 23:50:08.05ID:7V5lebao0 思いつきで変な暗号作るより検索するなりしてまともな基礎的なアルゴリズムを実装したほうが勉強になる
712デフォルトの名無しさん (スップ Sd3f-nSBM)
2017/07/11(火) 23:55:54.87ID:KCPaJcrVd 文盲多すぎね?
bit演算をやる方法を学びたい的な雰囲気なのに暗号作る方をメインに読み取ってるやつおおくね?
しかもレスもあったあとなのに
bit演算をやる方法を学びたい的な雰囲気なのに暗号作る方をメインに読み取ってるやつおおくね?
しかもレスもあったあとなのに
713デフォルトの名無しさん (ワッチョイ 176f-zXdO)
2017/07/11(火) 23:59:49.23ID:jUUyBjmf0714デフォルトの名無しさん (オッペケ Srcb-sNxi)
2017/07/12(水) 00:01:29.72ID:XspFYFk7r715デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 00:04:15.65ID:WTh+eJgx0716デフォルトの名無しさん (スップ Sd3f-nSBM)
2017/07/12(水) 00:06:40.65ID:vUTYJqrrd717はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-rvkC)
2017/07/12(水) 00:15:27.23ID:trGyb9bp0 >>713
単に int と書いたら signed int と書いたのと同じ意味になるからよく誤解されるんだけど、
char は signed char でも unsigned char でもない固有の型なんだよ。
オーバーロードで試してみたらすぐわかる。
表現できる範囲は signed char か unsigned char のどちらかと同じではあるけど、
どちらかは処理系が選択していい。
処理系によってはオプションで変えられる場合もある。
単に int と書いたら signed int と書いたのと同じ意味になるからよく誤解されるんだけど、
char は signed char でも unsigned char でもない固有の型なんだよ。
オーバーロードで試してみたらすぐわかる。
表現できる範囲は signed char か unsigned char のどちらかと同じではあるけど、
どちらかは処理系が選択していい。
処理系によってはオプションで変えられる場合もある。
718片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v)
2017/07/12(水) 00:22:30.14ID:mvEs3lAId #include <cstdint>
unsigned char a[128];
...
unsigned char prev4bits = (a[128 - 1] >> 4);
for (int i = 0; i < 128 - 1; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
prev4broken = b;
}
unsigned char a[128];
...
unsigned char prev4bits = (a[128 - 1] >> 4);
for (int i = 0; i < 128 - 1; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
prev4broken = b;
}
719片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v)
2017/07/12(水) 00:29:02.98ID:mvEs3lAId >>718
訂正。
#define NUM_BYTES 123
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
prev4bits = b;
}
訂正。
#define NUM_BYTES 123
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
prev4bits = b;
}
720片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v)
2017/07/12(水) 00:42:16.50ID:mvEs3lAId あるいは
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(int); i++) {
unsigned char b = (a[(i + 1) * sizeof(int) - 1] >> 4);
((int *)a)[i] <<= 4;
a[i * sizeof(int)] |= prev4bits;
prev4bits = b;
}
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(int); i++) {
unsigned char b = (a[(i + 1) * sizeof(int) - 1] >> 4);
((int *)a)[i] <<= 4;
a[i * sizeof(int)] |= prev4bits;
prev4bits = b;
}
721片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v)
2017/07/12(水) 00:46:41.27ID:mvEs3lAId >>720
訂正。
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(unsigned int); i++) {
>unsigned char b = (a[(i + 1) * sizeof(unsigned int) - 1] >> 4);
((unsigned int *)a)[i] <<= 4;
a[i * sizeof(unsigned int)] |= prev4bits;
prev4bits = b;
}
訂正。
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(unsigned int); i++) {
>unsigned char b = (a[(i + 1) * sizeof(unsigned int) - 1] >> 4);
((unsigned int *)a)[i] <<= 4;
a[i * sizeof(unsigned int)] |= prev4bits;
prev4bits = b;
}
722デフォルトの名無しさん (ワッチョイ 9f8f-gRQY)
2017/07/12(水) 01:19:28.71ID:L1I2nS9y0 >>710
負数を左シフトしても問題ないだろ
負数を左シフトしても問題ないだろ
723デフォルトの名無しさん (ワッチョイ 9f8f-gRQY)
2017/07/12(水) 01:21:26.50ID:L1I2nS9y0 ああ、元の式を見てなかった
まさか足し算してるとは…
そのまま符号付きで使うことを意図してたら、確かに問題だな
まさか足し算してるとは…
そのまま符号付きで使うことを意図してたら、確かに問題だな
724デフォルトの名無しさん (ワッチョイ ffaa-PX3H)
2017/07/12(水) 05:56:30.63ID:HQm2gXhD0 LLVM, MISRA-Cでも決められているけど、
int, char など、処理系依存の型は使うな。
必ず、ビット数・符号の有無を明示すること
unsigned char
unsigned int32
int, char など、処理系依存の型は使うな。
必ず、ビット数・符号の有無を明示すること
unsigned char
unsigned int32
725デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/12(水) 06:25:07.29ID:Mf+sZV2C0726デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/12(水) 06:33:18.90ID:Mf+sZV2C0727デフォルトの名無しさん (スップ Sd3f-nGAm)
2017/07/12(水) 06:33:41.93ID:7DtiXvdjd728デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/12(水) 06:35:07.19ID:DgqX1C+L0 C++はそろそろbyte型が入るよ。
多分エーリアスだけどね。
多分エーリアスだけどね。
729デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/12(水) 06:38:05.27ID:Mf+sZV2C0 unsigned int x = (unsigned int)a[0] << 24 | (unsigned int)a[1] << 16 | (unsigned int)a[2] << 8 | (unsigned int)a[3];
x = x << 30 | x >> 2;
互換性と簡潔さのバランスで、こんな感じじゃない?
unsigned intが32bit
charが8bit
限定
x = x << 30 | x >> 2;
互換性と簡潔さのバランスで、こんな感じじゃない?
unsigned intが32bit
charが8bit
限定
730デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/12(水) 06:44:26.17ID:Mf+sZV2C0 もうちょっと簡潔さ重視だと、キャスト無しで
731デフォルトの名無しさん (ワッチョイ d79a-0UkT)
2017/07/12(水) 06:50:51.01ID:Mf+sZV2C0 バリバリ環境依存で速度重視なら
intrinsicでAVX2やAVX512とか
インラインアセンブラはこのスレ的には反則?
intrinsicでAVX2やAVX512とか
インラインアセンブラはこのスレ的には反則?
>>724
かならずしも賛同できない、必要なときに unsigned/signed を指定すればいいのでは?
かならずしも賛同できない、必要なときに unsigned/signed を指定すればいいのでは?
733デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/12(水) 07:31:30.65ID:DgqX1C+L0 cstdintを使おう。
>>731
インラインで自由にかけてこそのC/C++ だと思うんだが、最近は嫌われるみたいだね
インラインで自由にかけてこそのC/C++ だと思うんだが、最近は嫌われるみたいだね
735デフォルトの名無しさん (オッペケ Srcb-sNxi)
2017/07/12(水) 07:59:55.87ID:SNfdy8Tor MISRAさんパネェな
for (int = 0;i <= n; i++) // きんし!
X operator ++(int); // きんし!
int main() {} // きんし!
for (int = 0;i <= n; i++) // きんし!
X operator ++(int); // きんし!
int main() {} // きんし!
736デフォルトの名無しさん (スップ Sd3f-nSBM)
2017/07/12(水) 08:23:54.55ID:vUTYJqrrd737デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 08:47:06.94ID:WTh+eJgx0 バイト単位で回転させるだけならstd::rotateやstd::copyでいい
738デフォルトの名無しさん (ワッチョイ 1706-pw7F)
2017/07/12(水) 10:52:11.36ID:QOR+1nCC0 自作クラスで他の自作クラスのインスタンスのコレクションを返すメソッドを追加したい
のですがクラス設計ってどうすればいいでしょうか??ガチガチの最適化?まではしなくていいので
普通ぐらいの最適化?ぐらいでOKです。
public:
std::shared_ptr<std::vector<std::shared_ptr<CMyClass>>> EnumeateMyClasses()
こんな感じで設計すればいいでしょうか?
C#なら
IEnumerable<CMyClass> EnumeateMyClasses()
とかにするんですが
のですがクラス設計ってどうすればいいでしょうか??ガチガチの最適化?まではしなくていいので
普通ぐらいの最適化?ぐらいでOKです。
public:
std::shared_ptr<std::vector<std::shared_ptr<CMyClass>>> EnumeateMyClasses()
こんな感じで設計すればいいでしょうか?
C#なら
IEnumerable<CMyClass> EnumeateMyClasses()
とかにするんですが
739デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/12(水) 11:12:35.14ID:DgqX1C+L0 返したものをどこら辺まで使うんやろ。
たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし。
でも、内部で持ってるものを外でたらい回しにされるのは気持ち悪いな。
たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし。
でも、内部で持ってるものを外でたらい回しにされるのは気持ち悪いな。
740デフォルトの名無しさん (ワッチョイ 1706-pw7F)
2017/07/12(水) 11:30:49.11ID:QOR+1nCC0 Enumerateメソッドは内部ではインスタンス作りますが、内部でその参照を保持することは
ないですね、メソッド内で作って呼び出し元に返すだけです。
どれくらいたらい回すかは使う側次第です。
>たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし
こんすと参照とかもあるんですか・・
まぁ、先ほども書いたようにC++に深入りすると死にそうなので、
とりあえず、C#erの人がちょっと毛が生えた程度でC++を使うレベルでいいので。
ないですね、メソッド内で作って呼び出し元に返すだけです。
どれくらいたらい回すかは使う側次第です。
>たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし
こんすと参照とかもあるんですか・・
まぁ、先ほども書いたようにC++に深入りすると死にそうなので、
とりあえず、C#erの人がちょっと毛が生えた程度でC++を使うレベルでいいので。
741デフォルトの名無しさん (ワッチョイ 9709-8gU5)
2017/07/12(水) 11:34:33.27ID:DgqX1C+L0742デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 12:51:39.26ID:WTh+eJgx0743デフォルトの名無しさん (スプッッ Sd3f-nGAm)
2017/07/12(水) 13:59:49.69ID:HO+tEfFId うん、ただvectorを返せばいいと思うけど
744デフォルトの名無しさん (ワッチョイ 1706-pw7F)
2017/07/12(水) 14:16:55.03ID:QOR+1nCC0 あれ、そうなんですか??
ムズイな・・
vector自体を返しても、要素自体はコピー?されないってことですかね?
ぐぉぉぉ。
ムズイな・・
vector自体を返しても、要素自体はコピー?されないってことですかね?
ぐぉぉぉ。
745デフォルトの名無しさん (スップ Sd3f-nSBM)
2017/07/12(水) 14:31:08.44ID:vUTYJqrrd なんでキャラ配列では終端文字を意識して
他の型の配列では意識しないんだぜ
他の型の配列では意識しないんだぜ
746はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-rvkC)
2017/07/12(水) 14:43:06.63ID:trGyb9bp0 >>744
RVO やムーブによってコピーが抑制される。
従来の RVO は「してもよい」という、
省略による最適化を許す形で規定されていたが C++17 からは必須になってるので、
条件がそろえば確実にコピーはされないことが保証される。
RVO やムーブによってコピーが抑制される。
従来の RVO は「してもよい」という、
省略による最適化を許す形で規定されていたが C++17 からは必須になってるので、
条件がそろえば確実にコピーはされないことが保証される。
747デフォルトの名無しさん (スプッッ Sd3f-nGAm)
2017/07/12(水) 15:24:37.86ID:HO+tEfFId748デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 19:23:12.64ID:WTh+eJgx0 >>744
C++で値の代入にはコピーとムーブの2種類がある
ムーブは代入先に中身を移譲する機能
ムーブ元はムーブ前と後とで同一であるとは保障されない
具体的には定義したムーブコンストラクタとムーブ代入演算子に記述したコードが実行される
vectorの場合ムーブされると内部の配列のポインタを代入先のvectorの配列のポインタに付け替える
こうすることで中身をコピーせずポインタの代入だけで他のvectorに移し変えることができる
ローカル変数など関数のスコープを抜けたら自動的に開放されて二度と使われない変数を戻り値にした場合、コピーしているように見えても自動的ムーブが選ばれている
C++で値の代入にはコピーとムーブの2種類がある
ムーブは代入先に中身を移譲する機能
ムーブ元はムーブ前と後とで同一であるとは保障されない
具体的には定義したムーブコンストラクタとムーブ代入演算子に記述したコードが実行される
vectorの場合ムーブされると内部の配列のポインタを代入先のvectorの配列のポインタに付け替える
こうすることで中身をコピーせずポインタの代入だけで他のvectorに移し変えることができる
ローカル変数など関数のスコープを抜けたら自動的に開放されて二度と使われない変数を戻り値にした場合、コピーしているように見えても自動的ムーブが選ばれている
749デフォルトの名無しさん (ワントンキン MM7f-hrVG)
2017/07/12(水) 21:17:08.54ID:AocYxtQtM750デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 22:04:13.96ID:WTh+eJgx0 >>749
正しくは変数の初期化の式で呼び出した場合は直接構築になりそれ以外ではムーブになるでした
正しくは変数の初期化の式で呼び出した場合は直接構築になりそれ以外ではムーブになるでした
751デフォルトの名無しさん (オッペケ Srcb-sNxi)
2017/07/12(水) 22:10:13.78ID:SNfdy8Tor >>750
それは規格のどこに書いてあるのですか?
それは規格のどこに書いてあるのですか?
752デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 22:34:27.41ID:WTh+eJgx0 >>751
規格厨じゃないから知りません
規格厨じゃないから知りません
753デフォルトの名無しさん (オッペケ Srcb-sNxi)
2017/07/12(水) 22:35:41.04ID:SNfdy8Tor なるほどこうやってデタラメが吹聴されて世の中が嘘だらけになるのだな
754デフォルトの名無しさん (ワッチョイ bfe4-LW8t)
2017/07/12(水) 22:42:26.18ID:WTh+eJgx0 >>753
何の引用も無しに書いた文章なんて嘘まみれに決まってるだろ
何の引用も無しに書いた文章なんて嘘まみれに決まってるだろ
755デフォルトの名無しさん (スップ Sd3f-nSBM)
2017/07/12(水) 23:21:39.63ID:vUTYJqrrd 上の方にあるbitいじりの件ってわざわざint型に演算していれ直す必要もなくね?って思い始めた
charの先頭文字をint*に直して操作するのじゃダメなんか??
charの先頭文字をint*に直して操作するのじゃダメなんか??
756デフォルトの名無しさん (ワッチョイ 9f89-EAWM)
2017/07/12(水) 23:36:27.73ID:cPl7Kb1c0757デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 06:46:33.90ID:lX8cJUTX0758デフォルトの名無しさん (ワッチョイ 321b-HOJV)
2017/07/13(木) 06:48:27.63ID:Yj3E6QQW0 >>699
C++の規格ではいつまでたってもビットローテーション入れてこないからな。
だが、ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、
両方作って確認した方がいいぞ。
バレルシフタ載ってるMPUじゃないとビットシフトが結構重かったりする
C++の規格ではいつまでたってもビットローテーション入れてこないからな。
だが、ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、
両方作って確認した方がいいぞ。
バレルシフタ載ってるMPUじゃないとビットシフトが結構重かったりする
759デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 07:03:23.04ID:lX8cJUTX0 > ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、
意味不明
ローテーションは後半だぞ
前半はただ単にintにロードしてるだけ
なぜかビッグエンディアン形式で
環境はSHか何か?
意味不明
ローテーションは後半だぞ
前半はただ単にintにロードしてるだけ
なぜかビッグエンディアン形式で
環境はSHか何か?
760デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 07:05:59.44ID:lX8cJUTX0 C++にローテーションなんか入れなくて良い
使う機会も少ないし、簡単にC++に表記できるし
他に増やしたいものは色々ある
そっち優先で
使う機会も少ないし、簡単にC++に表記できるし
他に増やしたいものは色々ある
そっち優先で
761デフォルトの名無しさん (スプッッ Sd9e-y/ao)
2017/07/13(木) 08:50:42.40ID:g1X/OFssd まるで開発資源が足りてないかのような言い分
762デフォルトの名無しさん (ドコグロ MM36-OTuW)
2017/07/13(木) 12:50:51.77ID:EiZFhTPMM 理解するための俺の頭の資源は有限
763デフォルトの名無しさん (スッップ Sd70-YkGU)
2017/07/13(木) 13:23:34.41ID:b1PvI/zld764デフォルトの名無しさん (ワッチョイ b2e4-vU4W)
2017/07/13(木) 19:02:52.17ID:oXf/mLI10 boostのdynamic_bitsetにバイト列との相互変換機能とバイトオーダーを切り替えられる機能と範囲を切り出せる機能を追加したものを標準に入れるべき
765デフォルトの名無しさん (ワッチョイ baf0-z+eH)
2017/07/13(木) 19:48:54.11ID:XkT7ManS0 FFTで使うビット逆転も仲間に入れてよ
766デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 20:46:05.57ID:lX8cJUTX0 >>765
ビット演算のテクニックの基本とかに載ってそう
ビット演算のテクニックの基本とかに載ってそう
767デフォルトの名無しさん (ワッチョイ 469f-wtyE)
2017/07/13(木) 21:06:39.82ID:RqiuYpPc0 ファストフーリエトランスファーの良い参考文献ないっすかね
768デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 21:20:53.50ID:lX8cJUTX0 おれ専門家だから何でも聞いて
769はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d015-S4qQ)
2017/07/13(木) 21:21:33.62ID:anRp6w5D0 まずは Wikipedia から
771デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/13(木) 21:27:47.04ID:lX8cJUTX0 そうだね
基礎から教えるつもりはない
応用、テクニック、実装方法、高速化、AVX512の使い方、キャッシュサイズによる最適化、HDDを使った場合の並べかえ方法、...
など具体的に聞いてくれれば
基礎から教えるつもりはない
応用、テクニック、実装方法、高速化、AVX512の使い方、キャッシュサイズによる最適化、HDDを使った場合の並べかえ方法、...
など具体的に聞いてくれれば
772デフォルトの名無しさん (ワッチョイ 469f-wtyE)
2017/07/13(木) 21:34:36.15ID:RqiuYpPc0 やりたいことはリアルタイムオシロですかね
ビジュアル的に表示出来ることから始めて
最終的にはArduinoで周波数検波器作りたいかも
ビジュアル的に表示出来ることから始めて
最終的にはArduinoで周波数検波器作りたいかも
773デフォルトの名無しさん (ワッチョイ 469f-wtyE)
2017/07/13(木) 21:38:11.93ID:RqiuYpPc0774デフォルトの名無しさん (ワッチョイ 321b-HOJV)
2017/07/14(金) 06:45:45.62ID:JUkrjA2t0 >>759
バレルシフタが何かわからんアホはすっこんでろ
バレルシフタが何かわからんアホはすっこんでろ
775デフォルトの名無しさん (ワッチョイ 6e9a-YkGU)
2017/07/14(金) 07:04:53.46ID:dCevqkg20 >>758の真ん中のブロック、意味がわかるなら解説よろしく
776デフォルトの名無しさん (スップ Sdc4-aKa0)
2017/07/15(土) 13:45:59.81ID:fnbVxk0dd VBから読み出せるdllを作るときの注意点ってある??
777デフォルトの名無しさん (ワッチョイ f6e4-PXrN)
2017/07/15(土) 14:17:18.00ID:u0zSb1i50 メモリ管理
778デフォルトの名無しさん (スプッッ Sd9e-y/ao)
2017/07/15(土) 15:27:55.38ID:GMW24mlhd779デフォルトの名無しさん (スップ Sdc4-aKa0)
2017/07/15(土) 17:14:07.14ID:fnbVxk0dd >>778
vb6.0っていう化石
vb6.0っていう化石
780デフォルトの名無しさん (スプッッ Sd9e-y/ao)
2017/07/15(土) 17:26:21.05ID:GMW24mlhd781デフォルトの名無しさん (スプッッ Sd9e-y/ao)
2017/07/15(土) 17:33:23.30ID:GMW24mlhd782デフォルトの名無しさん (ワッチョイ 0aa6-1m9k)
2017/07/16(日) 16:02:40.33ID:o1PqrRM30783デフォルトの名無しさん (ワッチョイ 955a-qt4g)
2017/07/16(日) 16:21:43.57ID:CxpOV7IS0 const が付いてるからじゃね
784デフォルトの名無しさん (ワッチョイ 0aa6-1m9k)
2017/07/16(日) 17:06:50.01ID:o1PqrRM30785デフォルトの名無しさん (ワッチョイ 955a-qt4g)
2017/07/16(日) 18:31:12.78ID:CxpOV7IS0 struct A<T (&)[4]> は、
struct A<const T &> の特殊化じゃないんじゃね?
struct A<const T &> の特殊化じゃないんじゃね?
786デフォルトの名無しさん (ワッチョイ f146-I8+U)
2017/07/16(日) 18:46:15.15ID:TI5o59vg0 テンプレート引数型を明示してるのに、その型に一意にマッチする定義がないからでしょ。
どっちが近いかを決定するような優先順位の規定がないので ambiguous になる。
compiler からしてみたら仕様がなければ勝手に判断できないって話。
どっちが近いかを決定するような優先順位の規定がないので ambiguous になる。
compiler からしてみたら仕様がなければ勝手に判断できないって話。
787片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd70-qcL/)
2017/07/16(日) 18:49:24.15ID:8ivnKhmqd int (&)[4]の左側にconst付ける意味あんの?
788デフォルトの名無しさん (オッペケ Srea-1m9k)
2017/07/16(日) 19:11:25.11ID:0XlWr73/r >どっちが近いかを決定するような優先順位の規定がない
何故か規格を読まない奴ほど自信満々に嘘をつく法則
何故か規格を読まない奴ほど自信満々に嘘をつく法則
789デフォルトの名無しさん (オッペケ Srea-1m9k)
2017/07/16(日) 19:21:41.99ID:0XlWr73/r 規格の8.3.4p1により配列のconstは要素のconstと等価なので、A<int const (&)[4]>はA<T const &>に適合する
790デフォルトの名無しさん (ワッチョイ f6e4-PXrN)
2017/07/16(日) 19:35:17.35ID:F/PpVxkG0 C++14まででいいので全文日本語の規格書くれよ
791デフォルトの名無しさん (ワッチョイ 0aa6-1m9k)
2017/07/16(日) 20:01:11.52ID:o1PqrRM30 優先順位ルールよくわからんっす
792デフォルトの名無しさん (スプッッ Sd2a-aKa0)
2017/07/16(日) 20:21:10.26ID:5frVCgipd793デフォルトの名無しさん (ワッチョイ f6e4-PXrN)
2017/07/16(日) 20:26:00.20ID:F/PpVxkG0 古代言語の解読は自己責任だ
細かいこと考えたくなければ標準入出力で繋げばいい
細かいこと考えたくなければ標準入出力で繋げばいい
795デフォルトの名無しさん (ワッチョイ f146-I8+U)
2017/07/16(日) 21:06:56.01ID:TI5o59vg0 >>789
ありがとう、探してくれて。
ありがとう、探してくれて。
796デフォルトの名無しさん (オッペケ Sr10-1m9k)
2017/07/16(日) 21:31:30.43ID:Z5uaiz2pr テンプレートの部分順序は規格1400ページの中で恐らく最も難解
順序はテンプレート実引数と関係無く仮引数同士で判定され、直感的には
P (&)[4] ← struct X {} const & × Pの導出不可
P const & ← struct X {} (&)[4] × Pの導出不可
によりambiguous
規格の説明は14.5.6.2, 14.8.2.4, 14.8.2.5
順序はテンプレート実引数と関係無く仮引数同士で判定され、直感的には
P (&)[4] ← struct X {} const & × Pの導出不可
P const & ← struct X {} (&)[4] × Pの導出不可
によりambiguous
規格の説明は14.5.6.2, 14.8.2.4, 14.8.2.5
797デフォルトの名無しさん (ワッチョイ 1a42-Z+b3)
2017/07/17(月) 06:43:20.69ID:WTwWKmZ80 >>673
プロパティってのはオブジェクトの状態の抽象化
例えば、コンテナのlistのsizeはコンテナとしての状態
sizeは要素数に対して定数時間で取得可能って条件があるからメンバ変数としてsizeを持ってる
そうでなければ線形時間になってしまう
vectorは大抵の場合、確保したメモリの始端と終端、要素の終端を表すポインタをメンバ変数に持つけど
ポインタ演算で定数時間で求められるから、sizeのメンバ変数は持っていない
emptyも状態、listもvectorも空を表すbool型のメンバ変数は持たないけど
コンテナとしてemptyかどうかの状態を取得できるわけで、メンバ変数と対とはなっていない
つまり、クラス設計上必要なオブジェクトとしての状態のget/setが目的であって
外部からメンバ変数にアクセスするための機能ではないよ(単にそれも出来るよってだけ)
>>699
charのポインタを4バイト幅の符号無し整数型にキャスト
その毎にビット演算、ループ数も32回で済む
エンディアンは気にしないw
プロパティってのはオブジェクトの状態の抽象化
例えば、コンテナのlistのsizeはコンテナとしての状態
sizeは要素数に対して定数時間で取得可能って条件があるからメンバ変数としてsizeを持ってる
そうでなければ線形時間になってしまう
vectorは大抵の場合、確保したメモリの始端と終端、要素の終端を表すポインタをメンバ変数に持つけど
ポインタ演算で定数時間で求められるから、sizeのメンバ変数は持っていない
emptyも状態、listもvectorも空を表すbool型のメンバ変数は持たないけど
コンテナとしてemptyかどうかの状態を取得できるわけで、メンバ変数と対とはなっていない
つまり、クラス設計上必要なオブジェクトとしての状態のget/setが目的であって
外部からメンバ変数にアクセスするための機能ではないよ(単にそれも出来るよってだけ)
>>699
charのポインタを4バイト幅の符号無し整数型にキャスト
その毎にビット演算、ループ数も32回で済む
エンディアンは気にしないw
798デフォルトの名無しさん (オッペケ Sr10-1m9k)
2017/07/17(月) 09:28:01.08ID:ESb998SRr >エンディアンは気にしないw
物は言い様で、本当は触ったことが無いのであった
AIXやSPARC使いに「インテル能乙」と揶揄されても仕方ない
物は言い様で、本当は触ったことが無いのであった
AIXやSPARC使いに「インテル能乙」と揶揄されても仕方ない
799デフォルトの名無しさん (ワッチョイ 1a42-Z+b3)
2017/07/17(月) 09:43:52.37ID:WTwWKmZ80800デフォルトの名無しさん (ワッチョイ 3eaf-iUs+)
2017/07/17(月) 09:52:45.96ID:NM7AtMtK0 エクスプレッションテンプレートを使った二項演算子のオーバーロードって
・グローバル空間全体
・特定の名前空間で定義して、使う部分ではその名前空間を指定
のどちらかになるということになりますか?
つまり通常のクラスの演算子オーバーロードのようにクラス単位に限定する方法はなさそうです?
・グローバル空間全体
・特定の名前空間で定義して、使う部分ではその名前空間を指定
のどちらかになるということになりますか?
つまり通常のクラスの演算子オーバーロードのようにクラス単位に限定する方法はなさそうです?
801デフォルトの名無しさん (オッペケ Sr10-1m9k)
2017/07/17(月) 22:32:17.08ID:ESb998SRr 通常のクラスの例であるstd::complex<>は二項演算子を使う部分で名前空間など指定しなくても良いし
そのオーバーロード関数はクラスではなくstd名前空間に限定している
式テンプレートでそれ以上のことが必要なのだろうか
そのオーバーロード関数はクラスではなくstd名前空間に限定している
式テンプレートでそれ以上のことが必要なのだろうか
802デフォルトの名無しさん (ワッチョイ 7011-MRQN)
2017/07/18(火) 00:26:51.30ID:2CukONSS0 名前空間で定義して、ETで使うクラス全て特定の名前空間内で定義するか、
ライブラリが提供する型以外を許容しないなら、演算子を各クラス内に定義するだけでいい
ETと協調しうるあらゆる型も許容するために
template <typename T, typename U>
fugaexpression<T, U, ...> operator +(T t, U u);
と書きたいのなら、演算子を名前空間内に書くとか
enable_ifで条件に合わないものを弾くなりしないといけない
ライブラリが提供する型以外を許容しないなら、演算子を各クラス内に定義するだけでいい
ETと協調しうるあらゆる型も許容するために
template <typename T, typename U>
fugaexpression<T, U, ...> operator +(T t, U u);
と書きたいのなら、演算子を名前空間内に書くとか
enable_ifで条件に合わないものを弾くなりしないといけない
803デフォルトの名無しさん (ワッチョイ 7011-MRQN)
2017/07/18(火) 12:37:46.49ID:2CukONSS0 訂正
ETだから参照でないといかんね
operator +(T &&t, U &&u)
ETだから参照でないといかんね
operator +(T &&t, U &&u)
804デフォルトの名無しさん (ワッチョイ 3eaf-iUs+)
2017/07/18(火) 12:44:00.00ID:VOd4+Wz60 なんとなくわかりました
やってみます
やってみます
805デフォルトの名無しさん (ブーイモ MMfd-I8+U)
2017/07/18(火) 12:53:11.11ID:CTdksPCiM 式テンプレート作るのと、右辺値参照モノをしっかり作り込むのとどちらが良さげ?
806デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/18(火) 14:06:03.25ID:C2L8wOjPd 上でVB6.0について質問してるものだけどさらに重ねて質問させてください
VB6.0→C++に通信してる箇所が存在していてそこがstring→char※になってる
これって文字化けしないの??
VB6.0→C++に通信してる箇所が存在していてそこがstring→char※になってる
これって文字化けしないの??
807デフォルトの名無しさん (スップ Sd02-y/ao)
2017/07/18(火) 15:57:42.98ID:LmZYlO3Ud808デフォルトの名無しさん (アウアウエー Sa66-C5HA)
2017/07/19(水) 07:57:29.52ID:4WYjcaP8a >>806
コード内で文字列生成して表示したらエンコードが違って文字化けとかあるけど、外部から文字列受け取ってただ表示するだけならエンコードとか関係ないから問題は無い。
(ただのバイト列)
外部から文字列受け取ってそれを加工するとかだと問題ある時はあるが。
コード内で文字列生成して表示したらエンコードが違って文字化けとかあるけど、外部から文字列受け取ってただ表示するだけならエンコードとか関係ないから問題は無い。
(ただのバイト列)
外部から文字列受け取ってそれを加工するとかだと問題ある時はあるが。
809デフォルトの名無しさん (ワッチョイ 3eaf-iUs+)
2017/07/19(水) 14:22:33.44ID:cdBaS5I50810デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 20:36:51.87ID:ogeQAtV7d >>808
サンクス!!!
いじらないことにした
明示的なdllの呼び出しも出来なくて震えてます
Getprocaddressが出来ずに進まないです
何か間違っている箇所があれば教えてほしいです
dllは同階層に配置してます
あとdll側の宣言でWINAPIがあるパターンとないパターンを見るのだけども
必要ないってことはあり得るのでしょうか
dll側
_delspec(dllimport) int WINAPI AAA(int,int){
return 0;
}
呼び出し側
HINSTANCE hDLL; int (*func)(int,int);
if ((hDLL = LoadLibrary("AAA.dll")) == NULL)
printf("LoadLibrary is failed.\n");
else { if ((func = (int (*)(int,int))
GetProcAddress(hDLL, "AAA")) == NULL) printf("GetProcAddress is failed.\n");
else printf("main %d\n", func(1,1));
FreeLibrary(hDLL);
}
サンクス!!!
いじらないことにした
明示的なdllの呼び出しも出来なくて震えてます
Getprocaddressが出来ずに進まないです
何か間違っている箇所があれば教えてほしいです
dllは同階層に配置してます
あとdll側の宣言でWINAPIがあるパターンとないパターンを見るのだけども
必要ないってことはあり得るのでしょうか
dll側
_delspec(dllimport) int WINAPI AAA(int,int){
return 0;
}
呼び出し側
HINSTANCE hDLL; int (*func)(int,int);
if ((hDLL = LoadLibrary("AAA.dll")) == NULL)
printf("LoadLibrary is failed.\n");
else { if ((func = (int (*)(int,int))
GetProcAddress(hDLL, "AAA")) == NULL) printf("GetProcAddress is failed.\n");
else printf("main %d\n", func(1,1));
FreeLibrary(hDLL);
}
811片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 20:49:13.06ID:MaD+cEa1d >>810
importとexportを間違ってるよ。
importとexportを間違ってるよ。
812デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 21:54:41.55ID:ogeQAtV7d813片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:02:10.86ID:MaD+cEa1d まずは、出来たdllをダンプしてみな。関数型にはWINAPIが必要だよ。
814デフォルトの名無しさん (オッペケ Srea-hJ3a)
2017/07/19(水) 22:06:19.96ID:QocMLB2Ar815片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:06:40.85ID:MaD+cEa1d こういう場合は関数ポインタ型をtypedefしたら楽だよ。
816デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:10:20.05ID:ogeQAtV7d817片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:12:49.52ID:MaD+cEa1d typedef int (WINAPI *MYFUNC)(int, int);
818デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:13:35.01ID:ogeQAtV7d __stdcallがないってことか!!!!!
819片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:14:01.35ID:MaD+cEa1d dumpbinというダンプツールがあるから、それを使ってdllの情報をダンプする。
820片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:16:16.73ID:MaD+cEa1d どうやってdllを作った? 初心者だから作り方間違ってる可能性がある。
821デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:18:12.53ID:ogeQAtV7d >>820
ダンプするってのがほぼほぼ理解できてない
visualstudioでdll選んで空のプロジェクトを選んだ
それでcpp追加してその内容にさっきの構文とおまじないのwinmainを書いてビルド
ダンプするってのがほぼほぼ理解できてない
visualstudioでdll選んで空のプロジェクトを選んだ
それでcpp追加してその内容にさっきの構文とおまじないのwinmainを書いてビルド
822片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:21:21.65ID:MaD+cEa1d >>821
dllの場合はWinMain要らない。ダンプは専用のコマンドプロンプトで行う。ってことは、コマンドプロンプトの使い方も勉強しないといけない。
dllの場合はWinMain要らない。ダンプは専用のコマンドプロンプトで行う。ってことは、コマンドプロンプトの使い方も勉強しないといけない。
823片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:22:37.56ID:MaD+cEa1d DLLの場合はDllMainだね。
824デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:25:28.38ID:ogeQAtV7d825片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:25:41.24ID:MaD+cEa1d あっ、それからC++からC言語の関数を定義・参照するにはextern "C"を付けないといけない。
826片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:31:08.38ID:MaD+cEa1d C++関数のシンボル名は「mangling」によって変な名前になり、コンパイラーによって違うから(標準化されていない)、DLLでは使いづらいので、C言語関数にすることが多い。
827片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:39:22.35ID:MaD+cEa1d DLL内部の輸出関数にextern "C"を付けてC言語関数にする。
関数ポインター型をtypedefする。
DLLをダンプして関数シンボル名を確認する。
関数ポインター型をtypedefする。
DLLをダンプして関数シンボル名を確認する。
828デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:41:38.53ID:ogeQAtV7d >>825
C言語の関数を定義参照するってのは.cファイルが出てきたときの話よね?
C言語の関数を定義参照するってのは.cファイルが出てきたときの話よね?
829片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:43:26.89ID:MaD+cEa1d コンパイラーによって違うが、C言語関数が__cdeclのときは、そのシンボル名は先頭に下線が付き、__stdcallのときは関数名そのままだったかと。
830片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:46:12.04ID:MaD+cEa1d >>828
C++でDLL関数を参照するときは、DLL関数がC言語関数でないと、シンボル名がややこしくなって、GetProcAddressが難しくなるよ。ダンプすればシンボル名が確認できる。
C++でDLL関数を参照するときは、DLL関数がC言語関数でないと、シンボル名がややこしくなって、GetProcAddressが難しくなるよ。ダンプすればシンボル名が確認できる。
831デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:51:10.86ID:ogeQAtV7d832片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:54:29.77ID:MaD+cEa1d スタートメニューのVSの項目に、「なんちゃらコマンドプロンプト」というのがあるはずだ。
ソイツを起動すると黒い画面が出て来て、キーボードで「CD」コマンドで対象のフォルダに移動。
dumpbinに適当なコマンドライン引数を付けてEnter。
ソイツを起動すると黒い画面が出て来て、キーボードで「CD」コマンドで対象のフォルダに移動。
dumpbinに適当なコマンドライン引数を付けてEnter。
833片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:56:32.59ID:MaD+cEa1d >>831
DllMainにも__stdcallが必要。
DllMainにも__stdcallが必要。
834片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 22:59:03.92ID:MaD+cEa1d >>831
関数の引数と戻り値がC言語関数に見えれば中身C++でもOkay。
関数の引数と戻り値がC言語関数に見えれば中身C++でもOkay。
835デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 22:59:52.02ID:ogeQAtV7d836片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:00:31.80ID:MaD+cEa1d __stdcallやWINAPIなどを付けなければ、デフォルトで__cdeclになる。
837片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:02:59.40ID:MaD+cEa1d コンパイラーによってはデフォルトの呼び出し規約を変更できるかも知れない。
838片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:07:11.36ID:MaD+cEa1d 複数の関数を、extern "C" { ... } で囲ってもいいし、関数の直前にextern "C"を付けてもいい。
839デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 23:10:05.85ID:ogeQAtV7d >>838
個々につけた方が明示的で良いように思ったので個々でつけることにします
dll難しい....
linuxのsoファイル作成のソースコードと、winのdll作成のコードを共通化しようとしたら
defineで切るしかない??
個々につけた方が明示的で良いように思ったので個々でつけることにします
dll難しい....
linuxのsoファイル作成のソースコードと、winのdll作成のコードを共通化しようとしたら
defineで切るしかない??
840デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 23:14:11.62ID:ogeQAtV7d 質問ばかりで申し訳ないけどもヘッダファイルって作られないのかな?
dll側で定義した関数を公開するときにインポートライブラリで読み込ませるならばヘッダファイル必要になると思うのだけど
それは自身で作成することになる??
dll側で定義した関数を公開するときにインポートライブラリで読み込ませるならばヘッダファイル必要になると思うのだけど
それは自身で作成することになる??
841デフォルトの名無しさん (ワッチョイ f6e4-PXrN)
2017/07/19(水) 23:16:07.85ID:rRbujBCW0 >>839
Boost.DLLを使う
Boost.DLLを使う
842片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:17:50.12ID:MaD+cEa1d843片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:25:33.39ID:MaD+cEa1d WinMainやDllMainなど以外で自分で作った関数については、WINAPIよりもAPIENTRYを使うのがマナー。
844デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 23:28:24.94ID:ogeQAtV7d845デフォルトの名無しさん (ワッチョイ 96ea-zKZC)
2017/07/19(水) 23:30:05.93ID:K+rHLYmS0 もう面倒だからC#で作れよ
846片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:32:25.59ID:MaD+cEa1d <windows.h>の中身を覗いてみると、Win32APIの流儀が見えてくる。時間泥棒かも知れないが、それが面白い。
847片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:35:11.33ID:MaD+cEa1d Boostという準標準ライブラリ群があって、Boost.DLLはその一部。APIENTRYマクロはWINAPIマクロの別名。
848片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:39:27.90ID:MaD+cEa1d 面倒なのが嫌なら最初からC#使え。C++は素人が来るところではない。
849デフォルトの名無しさん (スプッッ Sd9e-aKa0)
2017/07/19(水) 23:46:25.94ID:ogeQAtV7d >>845
開発でC++が必須なんだ..
開発でC++が必須なんだ..
850片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd94-qcL/)
2017/07/19(水) 23:50:31.02ID:MaD+cEa1d で、問題は解決したか?
851デフォルトの名無しさん (ワッチョイ f6e4-PXrN)
2017/07/19(水) 23:52:51.09ID:rRbujBCW0 それはいいけどググればすぐ解決する程度の問題をわざわざ人に聞くべきではない
852デフォルトの名無しさん (ワッチョイ 274b-FPZE)
2017/07/20(木) 00:02:01.05ID:a17NgPNI0 ググれってよく見るけど、最近はググった結果がQiitaとかで余計わからなくなる人いそう
853デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/20(木) 00:26:00.45ID:68uSpz6dd854デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/20(木) 00:35:16.57ID:am65me5o0 色々は無いでしょ
855デフォルトの名無しさん (ワッチョイ dff0-E/h9)
2017/07/20(木) 11:41:47.84ID:aRd+na0X0856デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/20(木) 19:54:56.95ID:z9hoJ4whr >>853
ひょっとしてまだやってるのか?
方法1:
1. 型をint (__stdcall *)(int,int) にする
2. GetProcAddressに渡す名前を"?AAA@@YGHHH@Z"の様な名前にする
この名前はVisual Studio付属のコマンドで
「dumpbin.exe /exports unko.dll」にて確認
32ビットと64ビットでは名前が異なるので注意
方法2:
1. 型をint (__stdcall *)(int,int) にする
2. テキストファイルunko.defを作り
EXPORTS
(TAB)AAA
と書いてプロジェクトのプロパティのリンク設定でこのファイルをモジュール定義ファイルに指定する
ひょっとしてまだやってるのか?
方法1:
1. 型をint (__stdcall *)(int,int) にする
2. GetProcAddressに渡す名前を"?AAA@@YGHHH@Z"の様な名前にする
この名前はVisual Studio付属のコマンドで
「dumpbin.exe /exports unko.dll」にて確認
32ビットと64ビットでは名前が異なるので注意
方法2:
1. 型をint (__stdcall *)(int,int) にする
2. テキストファイルunko.defを作り
EXPORTS
(TAB)AAA
と書いてプロジェクトのプロパティのリンク設定でこのファイルをモジュール定義ファイルに指定する
857デフォルトの名無しさん (ササクッテロリ Sp1b-Iuq2)
2017/07/20(木) 23:54:34.71ID:8WEeg4Ctp winapiの流儀とか見ていて吐き気を催す
858デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/21(金) 00:44:29.75ID:OjZ8KrLm0 WINAPIのtypedefされた型を元のプリミティブ型に書き直すのが趣味です
859デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/21(金) 00:47:34.17ID:zOHs/jgU0 F12を叩きたいのか
860デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/21(金) 04:01:38.56ID:7GF1vWDt0 extern "C" __declspec(dllexport) int __stdcall func(int,int){}
"?AAA@@YGHHH@Z"のような吐き気催す引数無くした名前だけ出力したい場合は extern "C" を前に付けると解決
"?AAA@@YGHHH@Z"のような吐き気催す引数無くした名前だけ出力したい場合は extern "C" を前に付けると解決
861デフォルトの名無しさん (ワッチョイ a7b4-jxVo)
2017/07/21(金) 07:00:36.74ID:h5hvtEqn0 http://qiita.com/YukiMiyatake/items/9c099041eab9ee8b349d
uniqu_ptrに頼って生歩使わないとか、
そんなだったらはじめからC++なんか使うな
アホはC++使うなって見本
>リソースを生で使うのは アンチデザパタです!
それがどーした。パターンでしか考えられないお前
uniqu_ptrに頼って生歩使わないとか、
そんなだったらはじめからC++なんか使うな
アホはC++使うなって見本
>リソースを生で使うのは アンチデザパタです!
それがどーした。パターンでしか考えられないお前
862デフォルトの名無しさん (ワッチョイ a709-leQM)
2017/07/21(金) 07:42:02.40ID:7e+pM3K/0 えらいねー。
863デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/21(金) 07:57:26.95ID:SclDYwDCd 所有権を持った人が自分でnew deleteするってのは確かにもうあり得ないでいいだろう。
それを「生ポインタを使わない」と表現するのは言い過ぎというか誤解を生む。
それを「生ポインタを使わない」と表現するのは言い過ぎというか誤解を生む。
864デフォルトの名無しさん (ワッチョイ 274b-G5Pk)
2017/07/21(金) 08:46:52.32ID:2RjE57oB0 生保使う場面ってどんな時だろ?
865デフォルトの名無しさん (ドコグロ MM9f-tIP3)
2017/07/21(金) 08:47:22.86ID:fYLttpYeM delete禁止構文欲しいぜ
866デフォルトの名無しさん (ワッチョイ a709-leQM)
2017/07/21(金) 08:49:46.05ID:7e+pM3K/0 生ぽは、その場で文字列生成して関数に食わせる以外は参照だなぁ。
867デフォルトの名無しさん (ドコグロ MM9f-tIP3)
2017/07/21(金) 08:54:06.32ID:fYLttpYeM868デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/21(金) 10:34:18.10ID:SclDYwDCd 自分でnew deleteするなんて発想が無くなってきたから別にポインタ渡しに違和感ないけどな
869デフォルトの名無しさん (ワッチョイ a709-leQM)
2017/07/21(金) 11:14:02.61ID:7e+pM3K/0 設計的にどうなんだろう。
870デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/21(金) 11:40:31.31ID:SclDYwDCd 生ポインタは誰が資源管理するのか曖昧になるからよくない、って主張は昔はあったと思う。
いまソースコードを検索してnew もdeleteも見当たらないという状況なら、そんなのはもう
忘れていいと思う。
いまソースコードを検索してnew もdeleteも見当たらないという状況なら、そんなのはもう
忘れていいと思う。
871はちみつ餃子 ◆8X2XSCHEME (ワッチョイ df15-QK4i)
2017/07/21(金) 12:08:08.05ID:2BokDUmp0 例外が発生したときの後始末なんかもきちんとしようと考えると面倒くさいし、
スマートポインタは積極的に使うべきなんだろうな。
スマートポインタは積極的に使うべきなんだろうな。
872デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/21(金) 12:40:47.73ID:OjZ8KrLm0 Qtみたいな自分でnewはするけど親オブジェクトがdeleteしてくれるようなものもある
873デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/21(金) 17:13:44.75ID:7GF1vWDt0 unique_ptrとか中身リファレンサだろうしリファレンサとかクラスで自己実装しちゃうけどね
874デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/21(金) 17:16:06.65ID:7GF1vWDt0 あ、unique_ptrは複製が効かないポインタか
shared_ptrと混同していたorz
shared_ptrと混同していたorz
875デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/21(金) 17:18:37.74ID:7GF1vWDt0 でもイラネな
unique_ptrでメンバ全部実装やるとアタマ狂うだろ多分
unique_ptrでメンバ全部実装やるとアタマ狂うだろ多分
876デフォルトの名無しさん (ワッチョイ 67a2-fDNv)
2017/07/21(金) 18:24:31.33ID:uK7tgvol0 いらないとか使わないとか言いつつ、実のところ、理解できなくて使えません、って人を現場で何人も見てきたよ。
877デフォルトの名無しさん (ワンミングク MMbf-Y5fB)
2017/07/21(金) 18:39:26.01ID:rSdKKkw+M うちのプロダクションコードほぼ100%はユニポだよ
リファレンスはそこらじゅうでもってるけど
リファレンスはそこらじゅうでもってるけど
878デフォルトの名無しさん (スッップ Sdff-AsiQ)
2017/07/21(金) 18:56:21.10ID:SclDYwDCd >>876
なんでそんなやつを雇ったんだよ
なんでそんなやつを雇ったんだよ
879デフォルトの名無しさん (ワッチョイ 67a2-fDNv)
2017/07/21(金) 19:36:52.29ID:uK7tgvol0880デフォルトの名無しさん (ワッチョイ ff32-3c2/)
2017/07/21(金) 21:20:11.09ID:QkEYt5+b0 誰も触れないけど、delete[] だよな?
まぁ、さておき、new使うか?
オレnew自体ほとんど使わないんだけど。。。
組み込み系だとやっぱ使うのかね?
メモリ管理なんて、スタック上とか、コンテナに任せちゃえば、いいとおもうんだ。
まぁ、さておき、new使うか?
オレnew自体ほとんど使わないんだけど。。。
組み込み系だとやっぱ使うのかね?
メモリ管理なんて、スタック上とか、コンテナに任せちゃえば、いいとおもうんだ。
881デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/21(金) 21:43:07.75ID:OjZ8KrLm0 いいと思うよ
今のバージョンではnewを使わせるライブラリ以外で使う状況が無い
今のバージョンではnewを使わせるライブラリ以外で使う状況が無い
882デフォルトの名無しさん (スプッッ Sd7f-AsiQ)
2017/07/21(金) 22:02:26.89ID:mLcSl7GWd make_uniqueとmake_sharedが出来てからはな
883デフォルトの名無しさん (ワッチョイ bfaf-BQa+)
2017/07/21(金) 22:10:51.61ID:l1puV9v10 templateでエラーが出された場合なんかでチェックするために
templateが展開された状態を見る手法みたいなのってありますかね?
templateが展開された状態を見る手法みたいなのってありますかね?
884デフォルトの名無しさん (ワンミングク MMbf-Y5fB)
2017/07/21(金) 22:26:33.98ID:rSdKKkw+M make_sharedってカスタムデリータいれられたっけ?
885デフォルトの名無しさん (ワッチョイ bfaf-BQa+)
2017/07/21(金) 22:50:57.29ID:l1puV9v10886デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/21(金) 23:09:04.52ID:7GF1vWDt0 使い方は解るよ
ただ、自転車の補助輪みたいだなと
ただ、自転車の補助輪みたいだなと
887デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/21(金) 23:15:13.65ID:OjZ8KrLm0 そういうのより
std::vector<int> v;
↑これを右クリックして展開されたコードを表示するようなことがしたい
std::vector<int> v;
↑これを右クリックして展開されたコードを表示するようなことがしたい
888デフォルトの名無しさん (スップ Sd7f-7lrd)
2017/07/22(土) 17:58:14.35ID:0MeMH5fDd889デフォルトの名無しさん (ワッチョイ bfc5-/jiT)
2017/07/22(土) 19:30:56.71ID:RGdGfASA0 わざわざマングルされたメソッド名をエクスポートなどせずともファクトリーメソッドにすれば良いのでは…
ファクトリーメソッド自体はextern "C"で逝ける
DLL側のコードで確保したメモリはDLL側で開放する(プロセス本体側のコードで確保したメモリはプロセス本体側で開放する)
という点は気おつけねばならないが
と流れを読まずにレス
ファクトリーメソッド自体はextern "C"で逝ける
DLL側のコードで確保したメモリはDLL側で開放する(プロセス本体側のコードで確保したメモリはプロセス本体側で開放する)
という点は気おつけねばならないが
と流れを読まずにレス
890デフォルトの名無しさん (ワッチョイ bfc5-/jiT)
2017/07/22(土) 20:49:40.35ID:RGdGfASA0 スマンorz
誤: ファクトリーメソッド
正: アブストラクトファクトリーメソッド
アブストラクトファクトリーメソッドなら具象クラスのコードは全部DLLL側になるので安心
オブジェクトのdeleteもDLLL側でやるように関数を設けてDLLLからエクスポートしてそれを使う
誤: ファクトリーメソッド
正: アブストラクトファクトリーメソッド
アブストラクトファクトリーメソッドなら具象クラスのコードは全部DLLL側になるので安心
オブジェクトのdeleteもDLLL側でやるように関数を設けてDLLLからエクスポートしてそれを使う
891デフォルトの名無しさん (ワッチョイ dff0-E/h9)
2017/07/22(土) 20:53:28.27ID:XKQJiiwl0 DLLLL?
892デフォルトの名無しさん (ブーイモ MMcf-fDNv)
2017/07/22(土) 20:59:49.34ID:g3jBnlfdM どぅるるる
893デフォルトの名無しさん (ワッチョイ dff0-E/h9)
2017/07/22(土) 21:12:32.20ID:XKQJiiwl0 DLLゲームというものがあり、この四つの規則だけでDIIをDLLに変換できるか、というのがパズルの主旨である
894デフォルトの名無しさん (ワッチョイ 276f-hfaq)
2017/07/23(日) 02:54:24.55ID:JReadhjR0 new,new[],delete,delete[]を定義すれば、全てDLL側で実装出来るでしょう?
895デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 11:16:55.64ID:T5oE3FpLd CPUやOSに依存したいコーディング難しいよう
896デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/23(日) 11:25:11.61ID:Rkw6OP4p0 依存姿態?
897デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 11:26:02.43ID:T5oE3FpLd >>896
しないだった
しないだった
898デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:41:00.33ID:7fREas1Ld エンディアン
charのサイズ
負の数の表現方法
この辺がくせ者
charのサイズ
負の数の表現方法
この辺がくせ者
899デフォルトの名無しさん (ワッチョイ a7c5-/jiT)
2017/07/23(日) 12:43:24.45ID:Z5IwvI350 符号付整数の右シフトとwrap aroundは未定義動作
だがあんま認識してる人が居ないという
だがあんま認識してる人が居ないという
900デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:47:13.35ID:7fREas1Ld charが16bitや32bitだと、
8bit単位のデータを扱うのが非常に面倒
現実的にはパック形式も必要になるので
8bit単位のデータを扱うのが非常に面倒
現実的にはパック形式も必要になるので
901デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:48:45.60ID:7fREas1Ld 負の数もいろいと
00...0はトラップ値だったり
00...0はトラップ値だったり
902デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:49:28.11ID:7fREas1Ld 80...00の間違い
903デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:50:38.60ID:7fREas1Ld near farとか
各種pragmaとかアラインメントとか
機種依存しないコードなんてのは実際には妄想
各種pragmaとかアラインメントとか
機種依存しないコードなんてのは実際には妄想
904デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 12:52:19.16ID:7fREas1Ld 使用可能リソースがそもそも違う
905デフォルトの名無しさん (ワッチョイ df33-9XI3)
2017/07/23(日) 14:01:31.88ID:Ach+AE6n0 stdintじゃいかんの?
906デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 14:22:24.82ID:7fREas1Ld それで何が解決する?
907デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/23(日) 14:38:32.39ID:+MmkkbFw0 そういうのは必要な人がパッチを書けばいい
プロジェクトのメインの開発者は一般的なPC用CPUだけ想定していればいい
プロジェクトのメインの開発者は一般的なPC用CPUだけ想定していればいい
908デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 15:01:31.12ID:7fREas1Ld 組み込み機器を完全に無視した発言
909デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 16:52:13.50ID:T5oE3FpLd エンディアンへの注意と
sizeof演算子への注意と
unsignedか否か
この辺を注意すればまずは良いんだね
sizeof演算子への注意と
unsignedか否か
この辺を注意すればまずは良いんだね
910デフォルトの名無しさん (スッップ Sdff-z/ev)
2017/07/23(日) 16:57:12.36ID:7fREas1Ld911デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 17:23:53.30ID:T5oE3FpLd 難しいな
色々なPCで動作させようとするのは
ところでdllでもsoでも使えるようなコード書きたいんだけども
呼び出し部分だけifdef切るのとソースコード自体わけるのとどちらが良いんだろ?
色々なPCで動作させようとするのは
ところでdllでもsoでも使えるようなコード書きたいんだけども
呼び出し部分だけifdef切るのとソースコード自体わけるのとどちらが良いんだろ?
912デフォルトの名無しさん (ワッチョイ 276f-dw5s)
2017/07/23(日) 17:27:19.50ID:71jKdlZw0 dllと言えばdllの呼び出し口以外の内部で完結してるような関数ってどうやってテストするんだろう
俺それやったことねえや
俺それやったことねえや
913デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/23(日) 18:02:24.35ID:+MmkkbFw0 そもそもpublicでないものをテストする必要は無い
914デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 18:04:39.20ID:7bD+iXj90 日本は未テスト納品が当たり前だからな。
915デフォルトの名無しさん (ワッチョイ 276f-dw5s)
2017/07/23(日) 18:10:47.08ID:71jKdlZw0 >>913
パブリックでなくとも動作検証は必要ではないか?って思い始めた
関数単位でのテストが積み重なって一番大きなdllのテストに移る的な
設計上に多重継承が現れたんだけど多重継承って設計的にどう??
パブリックでなくとも動作検証は必要ではないか?って思い始めた
関数単位でのテストが積み重なって一番大きなdllのテストに移る的な
設計上に多重継承が現れたんだけど多重継承って設計的にどう??
916デフォルトの名無しさん (ワッチョイ a77f-E/h9)
2017/07/23(日) 18:20:48.79ID:1KmUXPg00 テストの目的にもよるな。
仕様に対する保証という意味でならば当然公開しないものはテストの必要がないが、
開発するうえではモジュール毎にテストできた方が問題の発見に役立つし。
テストコードはスタティックリンクするのがお手軽なんじゃないかな。
仕様に対する保証という意味でならば当然公開しないものはテストの必要がないが、
開発するうえではモジュール毎にテストできた方が問題の発見に役立つし。
テストコードはスタティックリンクするのがお手軽なんじゃないかな。
917デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/23(日) 18:39:25.88ID:+MmkkbFw0 >>915
多重継承は気をつけて使えば問題ない
多重継承は気をつけて使えば問題ない
918デフォルトの名無しさん (ワッチョイ 276f-dw5s)
2017/07/23(日) 18:52:38.36ID:71jKdlZw0919デフォルトの名無しさん (ワンミングク MMbf-Y5fB)
2017/07/23(日) 19:04:55.28ID:b+Hb+B30M 継承をextendとして使う場合は多重継承しやいほうがいい
920デフォルトの名無しさん (ワッチョイ a77f-E/h9)
2017/07/23(日) 19:26:40.53ID:1KmUXPg00921デフォルトの名無しさん (ワッチョイ a7c5-/jiT)
2017/07/23(日) 19:32:13.78ID:Z5IwvI350922デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 19:47:00.96ID:T5oE3FpLd 単体テストってGoogleテストとかのドライバ的なやり方をさしてんのか?
それともvisual studioに機能としてついてるやつをいってんのか?
それともvisual studioに機能としてついてるやつをいってんのか?
923デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/23(日) 20:14:53.55ID:H7crLcrqr924デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/23(日) 20:16:43.64ID:T5oE3FpLd 符号つき整数は論理シフトか算術シフトかコンパイラ依存ってだけの話でないの
925デフォルトの名無しさん (ワッチョイ a7c5-/jiT)
2017/07/23(日) 20:22:46.29ID:Z5IwvI350 不肖私めが述べさせていただきまするが、
Googleテスト(のプロジェクト)と本番用DLLプロジェクトのソースコード共有は両立できる
(ソースコード共有はテストドライバというよりはビルドシステム側(IDEやmake)が持っている機能なので、
Visual Studioの単体テストプロジェクトは使ったこと無いから知らん
なお、書いたらテスト、とは>>921で書いたが、書きなおしていないコードのテストまで毎晩やるか否かは開発手法による
エクストリームプログラミングなんかだと多少手間をかけてでもGoogleテストで全テストできるようにすねきだが
古式ゆかしいVカーブモデルとかだと「下流行程のテストで検証済みのものを上流行程のテストに上げる」という建前なので、
出戻りのリスクと引き換えに、下流行程でのテストをそう繰り返しはしないからテストドライバを使うまでもない
という考えも有り得る。
まさかとは思うが、テストドライバを使うか否かで適切なテストコードを書けたり書けなかったりするとか飯田さんよね?
Googleテスト(のプロジェクト)と本番用DLLプロジェクトのソースコード共有は両立できる
(ソースコード共有はテストドライバというよりはビルドシステム側(IDEやmake)が持っている機能なので、
Visual Studioの単体テストプロジェクトは使ったこと無いから知らん
なお、書いたらテスト、とは>>921で書いたが、書きなおしていないコードのテストまで毎晩やるか否かは開発手法による
エクストリームプログラミングなんかだと多少手間をかけてでもGoogleテストで全テストできるようにすねきだが
古式ゆかしいVカーブモデルとかだと「下流行程のテストで検証済みのものを上流行程のテストに上げる」という建前なので、
出戻りのリスクと引き換えに、下流行程でのテストをそう繰り返しはしないからテストドライバを使うまでもない
という考えも有り得る。
まさかとは思うが、テストドライバを使うか否かで適切なテストコードを書けたり書けなかったりするとか飯田さんよね?
926デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 20:27:48.89ID:7bD+iXj90 単体テスト、レグレッションテストしない奴は信用できない。
927デフォルトの名無しさん (ワンミングク MMbf-Y5fB)
2017/07/23(日) 20:40:09.17ID:b+Hb+B30M リグレッションテストが通ってるから単体はおろそかでいいか
→単体テストがないせいでリグレッションが落ちた理由がわからない(´・ω・`)
→よし単体テスト書くか!あれ?バグ発見!直すとリグレッションの期待値変わるけどまぁしばらくは仕方ないか
→あれ?久しぶりにリグレッションテストの結果見るとすげー値が変わってる…
→リグレッションテストメンテするか…
この輪廻から解脱できません、どうしたら成仏できますでしょうか
→単体テストがないせいでリグレッションが落ちた理由がわからない(´・ω・`)
→よし単体テスト書くか!あれ?バグ発見!直すとリグレッションの期待値変わるけどまぁしばらくは仕方ないか
→あれ?久しぶりにリグレッションテストの結果見るとすげー値が変わってる…
→リグレッションテストメンテするか…
この輪廻から解脱できません、どうしたら成仏できますでしょうか
928デフォルトの名無しさん (ワッチョイ 47e4-OcZC)
2017/07/23(日) 20:43:41.49ID:+MmkkbFw0 >>927
テスト駆動開発の理論を遵守して書く
テスト駆動開発の理論を遵守して書く
929デフォルトの名無しさん (ワッチョイ df11-efHF)
2017/07/23(日) 20:57:27.35ID:M0TZP5Vd0930デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 21:08:20.70ID:7bD+iXj90 なるほど。日本のSEは二種、基本情報処理すら受からないからな。
工程に入ってなくて当然だな。
工程に入ってなくて当然だな。
931デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/23(日) 21:14:38.25ID:H7crLcrqr932デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 21:19:26.67ID:7bD+iXj90 掛け算、割り算が糞遅いアセンブラならともかく、Cで符号付きをシフトする用途はなに?
933デフォルトの名無しさん (ワッチョイ 276f-dw5s)
2017/07/23(日) 21:22:45.19ID:71jKdlZw0 >>921
質問したの俺だけど別の人が書き込んでるね
テストの手法として俺は悩んでる
DLL内の呼び出されるような関数をどうやってテストすれば良いのかと
ドライバみたいなの作っても動かせるのは呼び出し口だけで合って
呼び出し口でいくら網羅テストしてもそれは呼び出し口のテストだしなぁーって
dll内にテストコード書き込むのことで実現できると思ったけどもそれはそれで汚いなって思ったから、
何かしら直接呼び出すことできないかなって聞いてた
そう色々と考えていたけど
ただ単に関数の掛かれているcppファイルを取り込んだexeを作れば良いだけか?って思い始めた
質問したの俺だけど別の人が書き込んでるね
テストの手法として俺は悩んでる
DLL内の呼び出されるような関数をどうやってテストすれば良いのかと
ドライバみたいなの作っても動かせるのは呼び出し口だけで合って
呼び出し口でいくら網羅テストしてもそれは呼び出し口のテストだしなぁーって
dll内にテストコード書き込むのことで実現できると思ったけどもそれはそれで汚いなって思ったから、
何かしら直接呼び出すことできないかなって聞いてた
そう色々と考えていたけど
ただ単に関数の掛かれているcppファイルを取り込んだexeを作れば良いだけか?って思い始めた
934デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/23(日) 21:32:37.27ID:H7crLcrqr この他人の回答を読まないコミュ障こそがこのスレの醍醐味
935デフォルトの名無しさん (ワッチョイ 276f-dw5s)
2017/07/23(日) 21:38:41.45ID:71jKdlZw0936デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/23(日) 21:41:07.86ID:H7crLcrqr937デフォルトの名無しさん (ワッチョイ a7c5-/jiT)
2017/07/23(日) 21:52:14.22ID:Z5IwvI350 >>931
タダで手に入るn3337.pdfの§5.8によると確かに
- 符号付整数の左シフトの結果は representable in the result type (値域内)でない場合未定義動作
- 符号付整数の右シフトの結果は処理系依存
と書いてあったわスマン;
ちな漏れの認識では{処理系依存}⊂{未定義動作}
根拠はJISの未定義動作の定義による…
タダで手に入るn3337.pdfの§5.8によると確かに
- 符号付整数の左シフトの結果は representable in the result type (値域内)でない場合未定義動作
- 符号付整数の右シフトの結果は処理系依存
と書いてあったわスマン;
ちな漏れの認識では{処理系依存}⊂{未定義動作}
根拠はJISの未定義動作の定義による…
938デフォルトの名無しさん (ワッチョイ a7c5-/jiT)
2017/07/23(日) 21:59:51.68ID:Z5IwvI350 いやすまん>>937の末尾2行撤回
これは前に認識を改めたんだった;
> 未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい
であって、未定義動作の検出やエラー処理の方法はともかく、未定義動作自体はどこまでいっても未定義動作
これは前に認識を改めたんだった;
> 未定義の動作に対して,その状況を無視して予測不可能な結果を返してもよい。翻訳時又はプログラム実行時に,文書化された,環境に特有な方法で処理してもよい
であって、未定義動作の検出やエラー処理の方法はともかく、未定義動作自体はどこまでいっても未定義動作
939デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 22:47:02.24ID:7bD+iXj90 >>936
回答になってないし、変人はおまえだよ。算術シフトが何か知らないでレスすんな。
回答になってないし、変人はおまえだよ。算術シフトが何か知らないでレスすんな。
940デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/23(日) 23:05:50.01ID:H7crLcrqr この自分の質問の日本語さえ読めないが故の意味不明なレス
それがこのスレの醍醐味
それがこのスレの醍醐味
941デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/23(日) 23:10:22.36ID:7bD+iXj90 >>940
おまえのスキルはとても他人の質問に回答するレベルではない。しかもコミュ障ときてる。
おまえのスキルはとても他人の質問に回答するレベルではない。しかもコミュ障ときてる。
942デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/24(月) 08:15:31.13ID:KtTsv21zM943デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/24(月) 17:14:10.91ID:mYhfbnvOr もちろん符号付きです^^
流石に最上位ビットまで使う場面では使わないが
流石に最上位ビットまで使う場面では使わないが
944デフォルトの名無しさん (スップ Sd7f-7lrd)
2017/07/24(月) 22:14:06.75ID:OsdOk4+1d char X[26]={'a',,,,,,,,,,'z'};
char* Y ="jmdjpgtmdajptwmeg";
for(int i=0;i<26;i++) {
for(int j=0;j<26;j++){
if( X[i]== Y[j] )
処理
}
}
文字検索して一致したら処理みたいにしたいのだけどtrueにならなくて困ってます
一文字比較はできない??
char* Y ="jmdjpgtmdajptwmeg";
for(int i=0;i<26;i++) {
for(int j=0;j<26;j++){
if( X[i]== Y[j] )
処理
}
}
文字検索して一致したら処理みたいにしたいのだけどtrueにならなくて困ってます
一文字比較はできない??
945片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 22:23:42.38ID:iUqnpKPOd >>944
これまでのすべての文字が一致しているかを表すフラグ変数を使え。
これまでのすべての文字が一致しているかを表すフラグ変数を使え。
946デフォルトの名無しさん (スップ Sd7f-7lrd)
2017/07/24(月) 22:27:59.85ID:OsdOk4+1d >>945
すまない理解ができん...
すまない理解ができん...
947片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 22:36:31.42ID:iUqnpKPOd948デフォルトの名無しさん (スップ Sd7f-7lrd)
2017/07/24(月) 22:37:56.92ID:OsdOk4+1d949デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/24(月) 22:40:41.63ID:zHcIYvyR0950片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 22:42:58.10ID:iUqnpKPOd iとj
951デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/24(月) 22:44:21.90ID:/CxPJ7M4d952片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 22:46:11.09ID:iUqnpKPOd 蝉コロン
953デフォルトの名無しさん (ワッチョイ df32-QK4i)
2017/07/24(月) 22:48:05.86ID:yuT7rhOA0 二重ループにする必要ある?
954片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 22:56:41.50ID:iUqnpKPOd if (...);←
955片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 23:00:33.31ID:iUqnpKPOd スマホ使ってるなら、テキストファイルにしてSDカードにファイルを取り込んで、ideoneに上げてくれ。
956デフォルトの名無しさん (オッペケ Sr1b-3YgS)
2017/07/24(月) 23:17:23.75ID:mYhfbnvOr 「ス マホ使ってるなら、テキストファイルにしてS Dカードにファイルを取り込んで、 ideoneに上げてくれ」
失礼ながら、何だか復唱したくなった
失礼ながら、何だか復唱したくなった
957片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 23:27:02.86ID:iUqnpKPOd PCのテキストをスマホにコピペ出来ない情報弱者が居るから、ていねいに説明したまで。
958デフォルトの名無しさん (ワッチョイ dfaa-E/h9)
2017/07/24(月) 23:28:31.51ID:zHcIYvyR0 どこにスマホの必要が?
959片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdff-84fd)
2017/07/24(月) 23:30:40.46ID:iUqnpKPOd >>944みたいな汚いコードをパソコンで書くヤツはいないっしょ。絶対スマホだよ。
960デフォルトの名無しさん (スップ Sdff-7lrd)
2017/07/25(火) 11:24:31.23ID:sTL1greYd961デフォルトの名無しさん (ドコグロ MM9f-tIP3)
2017/07/25(火) 12:18:12.57ID:TTkvk/JeM >>960
std::map使え。
std::map使え。
962デフォルトの名無しさん (ドコグロ MM9f-efHF)
2017/07/25(火) 20:17:26.54ID:KNlosRFTM >>960
そもそも何をしたいのかよくわからんのは俺だけ?
そもそも何をしたいのかよくわからんのは俺だけ?
963デフォルトの名無しさん (ワッチョイ 679a-z/ev)
2017/07/25(火) 21:23:57.34ID:0WJY7+7Z0964デフォルトの名無しさん (ワッチョイ ff32-3c2/)
2017/07/25(火) 23:21:03.65ID:reUD2K+v0 diffとか、レーベンシュタイン距離はかるとか、めんどくさいことするでなければ、str系の関数つかうんじゃね?普通
strcmpとか、strspnとか。
strcmpとか、strspnとか。
965デフォルトの名無しさん (ワッチョイ 474d-E/h9)
2017/07/25(火) 23:43:16.64ID:zpZ2WILs0 std::stringも使ってあげて
966デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/26(水) 00:14:40.89ID:BELJl12W0 片方a〜zまで順序揃っているからequal_rangeで普通にイケそうだけど
967デフォルトの名無しさん (ドコグロ MMff-tIP3)
2017/07/26(水) 09:11:32.50ID:Z6NFAYLOM >>963
なんで?
なんで?
968デフォルトの名無しさん (スプッッ Sd7f-7lrd)
2017/07/26(水) 18:04:12.49ID:n/TvQiRnd >>964
strcmpって文字列にたいしてよね?
strcmpって文字列にたいしてよね?
969デフォルトの名無しさん (ワンミングク MMbf-Y5fB)
2017/07/26(水) 18:57:41.27ID:tvexcE8JM970デフォルトの名無しさん (ワッチョイ df9f-2Ge4)
2017/07/26(水) 19:15:56.17ID:BELJl12W0 何コレすごくキモチワルイ
971デフォルトの名無しさん (ワッチョイ ff32-3c2/)
2017/07/26(水) 20:34:16.84ID:z7xwmnWB0972デフォルトの名無しさん (ワッチョイ 87e3-Y5fB)
2017/07/26(水) 23:02:56.23ID:OlHQ9vUk0 >>970
なんで?
なんで?
973デフォルトの名無しさん (スプッッ Sd2a-yaaN)
2017/07/27(木) 01:52:35.67ID:dWT6t2a8d unsigned charの値をsigned charに移したい
ただ移す値はunsignedの1バイトを4ビットずつに区切って表現される値
130って値があるのならchar型には1000と0010の値をそれぞれ1バイトとして格納したい
charを見ればi番目に8、i+1番目に2が入る形
こんなことするならsprintfかな??
ただ移す値はunsignedの1バイトを4ビットずつに区切って表現される値
130って値があるのならchar型には1000と0010の値をそれぞれ1バイトとして格納したい
charを見ればi番目に8、i+1番目に2が入る形
こんなことするならsprintfかな??
974デフォルトの名無しさん (ワッチョイ 7b09-OP0G)
2017/07/27(木) 01:54:43.98ID:P9NETJAS0 ビット演算しろよ。
975デフォルトの名無しさん (ワッチョイ 0fe4-jgbY)
2017/07/27(木) 01:58:14.37ID:Fr5QaIId0 そんな基礎的すぎる処理を人に聞くな
976デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 07:27:45.64ID:P1js1uXhM977デフォルトの名無しさん (ワッチョイ f39a-crdR)
2017/07/27(木) 07:34:20.55ID:tCxrViSf0 charは8bit前提でいいのか?
978デフォルトの名無しさん (ワッチョイ 8a89-mrbm)
2017/07/27(木) 07:39:08.55ID:IgWBj8ON0 >>977
問題を無駄にややこしくするなよ。
問題を無駄にややこしくするなよ。
979デフォルトの名無しさん (ワッチョイ f39a-crdR)
2017/07/27(木) 07:40:36.50ID:tCxrViSf0 最近charが16bitの環境を使ったからつい
980デフォルトの名無しさん (ワッチョイ 6a9f-ns/O)
2017/07/27(木) 07:59:04.16ID:rWyXQzMv0 7ビットにパリティが1ビット
981デフォルトの名無しさん (ドコグロ MM8a-gqKx)
2017/07/27(木) 08:36:39.28ID:P1js1uXhM >>980
64bit に 8bit の ECC とか言われたらついていけなくなるんだからやめとき
64bit に 8bit の ECC とか言われたらついていけなくなるんだからやめとき
982デフォルトの名無しさん (ブーイモ MMd6-PRKf)
2017/07/27(木) 19:19:41.26ID:/VCkXAgyM >>979
なにそのTIのDSP
なにそのTIのDSP
983デフォルトの名無しさん (スッップ Sd8a-crdR)
2017/07/27(木) 19:24:23.50ID:F0lzbPxld >>982
良くおわかりで
良くおわかりで
984デフォルトの名無しさん (ペラペラ SDb6-ZO1u)
2017/07/28(金) 06:55:18.07ID:mjoh45CgD ほ
985デフォルトの名無しさん (ペラペラ SD2a-ZO1u)
2017/07/28(金) 21:15:49.27ID:aEgnwK31D し
986デフォルトの名無しさん (ワッチョイ f39a-crdR)
2017/07/28(金) 23:12:30.76ID:d5LZ2kks0 の
987デフォルトの名無しさん (ワッチョイ 7346-PRKf)
2017/07/29(土) 00:21:09.72ID:lS34gLdW0 仙一
988デフォルトの名無しさん (ワッチョイ 976f-ZO1u)
2017/07/29(土) 05:44:39.91ID:fSkalPfO0 えっ
989デフォルトの名無しさん (ワッチョイ 6a32-ZO1u)
2017/07/29(土) 07:39:00.75ID:q+2MbaQ80 なにっ
990デフォルトの名無しさん (ブーイモ MMbf-ov1m)
2017/07/29(土) 12:21:39.86ID:klnxojNUM991デフォルトの名無しさん (ワッチョイ 738e-PRKf)
2017/07/29(土) 16:04:09.21ID:mj0H/MXI0 >>990
乙
乙
992デフォルトの名無しさん (ワッチョイ 976f-ZO1u)
2017/07/29(土) 20:09:55.91ID:vcBWoe5a0 >>990
乙
乙
993片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-fKJy)
2017/07/29(土) 21:58:36.04ID:Y9LsTA7nd 埋め立てふせ
994片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-fKJy)
2017/07/29(土) 21:59:10.94ID:Y9LsTA7nd 埋めまーす。
995片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-fKJy)
2017/07/29(土) 22:01:20.68ID:Y9LsTA7nd 埋め星
996片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-fKJy)
2017/07/29(土) 22:03:11.75ID:Y9LsTA7nd 埋まるちゃん
997片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd8a-fKJy)
2017/07/29(土) 22:04:40.24ID:Y9LsTA7nd 「最後に言い残したことはないか?」
998デフォルトの名無しさん (オッペケ Srb3-Ibwl)
2017/07/29(土) 22:05:00.29ID:E0esoNX5r template d<0>J<0>(); // 明示的インスタンス化
999デフォルトの名無しさん (アウアウウー Sa9f-Gwu1)
2017/07/29(土) 22:05:20.80ID:46B+r2PEa 梅ッシュ
1000デフォルトの名無しさん (ワッチョイ 0f4d-V1Wy)
2017/07/29(土) 22:06:46.19ID:gp3BUyJn0 むしろ混乱する。
10011001
Over 1000Thread このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 120日 13時間 18分 57秒
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 120日 13時間 18分 57秒
10021002
Over 1000Thread 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★5 [七波羅探題★]
- 【速報】 米トランプ政権声明 「中国が台湾を奪おうとする、いかなる試みも阻止する」 中国「レッドラインだ」 ★2 [お断り★]
- 元プロ野球選手・堂上隼人(43)を20代女性2人へのわいせつ未遂容疑で8回目の逮捕…これまでの被害者は10代・20代の女性11人に [Anonymous★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【高校野球】なぜ『7回制』は反対多数でも止まらないか… 高野連が「全員の命」守るために貫く伝統より改革の姿勢 [冬月記者★]
- JAが"政府の備蓄米買い上げ"見越して価格下げず!?「古いコメは食用向きでないなどと理由をつけ...」専門家解説 ★2 [煮卵★]
- 【悲報】インターネット(光回線)来年度以降値上げか [358382861]
- 【高市悲報】自衛隊「実は事前に現場海域で中国軍から空母での発着訓練をすると通告がありました」え…?😨😨 [931948549]
- "メイドさん"が使う武器→ケンモメンの78%が一致に [856387292]
- 【高市速報】中国「このままだと日本が先制攻撃してくる」 [583597859]
- 【悲報】地銀や生保 長期金利急上昇で含み損が加速 [358382861]
- 日本企業「株主は口を出さず金だけ出せ!😡」←これ
