C++相談室 part130 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/31(金) 08:47:49.65ID:UkLjKqcm0
次スレを立てる時は本文の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
2017/06/10(土) 19:06:50.38ID:xSl9wCDP0
規格と簡単に言うけど、日本の産業界には言語規格を知っている人が、そもそもいない。
MISRA-C の日本の委員会の人でも、規格は知らないから、
欧州に問い合わせながら、本を書いたらしい

日本の産業界から、そうそうたるメンバーを集めても、規格は謎だらけ

日本では規格に詳しいのは、C++ 標準化委員会の、
ドワンゴ江添亮、επιστημη(エピステーメー)ぐらいだろ
2017/06/10(土) 19:17:08.33ID:1OFjIP+40
>>426
誤爆ってるぞ...
どこの誤爆かもわかるけど w
2017/06/10(土) 19:36:14.26ID:vzLlMkbRM
>>427
エピスは全然詳しくないだろ…
2017/06/10(土) 19:46:32.90ID:b/uhZ0uFa
>>427
ドラフトがネットでタダで手に入るんだから誰でも詳しくなれるだろ
金払えば規格も買えるんだし
標準化委員会にいないと詳しいとは言えないのか?
2017/06/10(土) 20:03:52.30ID:xSl9wCDP0
規格は、JISなどが翻訳しただけで、翻訳者には意味は分からない。
規格から、その条文に合った例題を、誰も作れない

だから、MISRA-C の日本委員会では、その条文を説明するための、
例題を作っては、欧州に問い合わせて、間違いが無いかどうかを確かめている

文章一つでも、解釈の仕方が一杯あるから、例題が無いと説明できない

法律の民法などと同じ。
TAC、伊藤塾など各社が、法律を解釈する受験本を、たくさん出しているだろ。
最高裁の判決を載せて、条文がどう解釈されたか、書いているのと同じ

規格だけがあって、それを読んでも、どうにもならない。
MISRA-C みたいに産業界から、数十人が集まって議論しても、条文の意図が分からない
2017/06/10(土) 20:32:33.27ID:1OFjIP+40
>>431
意図がわからない条文ってどれ?
ちょっと具体的にあげてみようか
2017/06/10(土) 20:40:48.55ID:yn1b1oYyr
mainの戻りのvoidが規格違反かどうかについて「otherwise」という表現の解釈で議論が始まってしまうレベルのウンコ文書
もとの英文が宜しくない
2017/06/10(土) 21:35:35.18ID:657mt0+/M
>>427
俺ですら自腹で買った規格書持ってるけど何言ってんの?
2017/06/10(土) 21:51:00.66ID:yn1b1oYyr
さすがに>>430-431の後にこのレスは
日本語読解力に問題があると言わざるを得ない
2017/06/10(土) 22:22:04.21ID:b/uhZ0uFa
>>431
法律と違って意図は分からなくてもいいだろ、曖昧な表現は困るが
意図がわからないとプログラミング上困る条文って具体的にどこだよ

曖昧な表現もそりゃあるとはいってもほんの一部だろ
それにたとえ委員会の人でもその曖昧な表現がどちらの意味なのか個人で決められるのか?って話
結局規格に明文化されたものが全てだろ

あと間違いがないか確認の問い合わせをするのは規格作ろうとしてるなら普通だと思うんだけど、とくにMISRA-Cの目的や内容からすれば
2017/06/10(土) 22:41:16.36ID:Pg73dp6X0
>>427の「言語規格を知っている」の定義をはっきりさせないまま議論を始めちゃう人は
規格を語るのに向いてない。
2017/06/10(土) 23:22:49.03ID:xSl9wCDP0
たぶん、あいまいなのは、規格が抽象的な表現で書いているからだろ。
いざ具体的な事例を出した場合に、それが正しいのか悪いのか、簡単には分からない

だから、MISRA-C みたいな解釈・説明書が必要になる

型変換のルールでも、潜在型とか、そういう用語を定義して、
わかりやすく説明している

法律でも、最高裁の判例を、数十年研究して解釈している。
それでも判事が7対6で、ひやひやもので決まった判例もある。
数年後に判断したら、結論が変わる

規格の抜け穴・論理矛盾などを研究するには、数十年かかる。
規格書を読んで、分かるようなものじゃない。
簡単にわかるのは、表面上の事だけ
439デフォルトの名無しさん (ワッチョイ 956f-ujiq)
垢版 |
2017/06/11(日) 00:38:45.98ID:TqhJN8GP0
規格なんて実際に使うコンパイラの仕様に比べたらゴミみたいなものだからな
最近は規格に敬意を払う傾向が強まってきたと思うけど
2017/06/11(日) 00:40:20.06ID:GyEdwZPXr
例えば「トリビアル」の定義はわかっても意図がわからないとコンテナーのテンプレートを正しく書くことは難しい
だが挫折の多くは文面の解釈よりも「正しい仕様を確認しようとしたが規格を読んでもわからなかった」パターンに思える
2017/06/11(日) 00:47:50.47ID:orY9bj1l0
コンパイルできないコードに価値は無い
コンパイラの方が全てにおいて正しい
2017/06/11(日) 03:24:02.05ID:/4sxfWxQ0
分からない時に、規格書を読んでも、分からない

具体的な用例集が必要。
法律で言えば、具体的な判決

こう書いたら間違いで、これが正しいみたいな例。
だから規格書から、その用例集を作るのに、長い研究期間がいる

そういう意味で、MISRA-C のように、多くの企業が参加して、研究すべき。
製品の品質を担保すべき
2017/06/11(日) 03:58:12.87ID:orY9bj1l0
それ言語設計者とコンパイラ開発者にしか価値無いよね
2017/06/11(日) 08:09:11.36ID:q49UmmFG0
そもそも MISRA は規格の解説書じゃないし
ワッチョイ 0baa-BUW4 は壮大に勘違いしてる
2017/06/11(日) 09:54:14.55ID:IXRoGBtM0
>>438
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は、正式ルートだと金出して買うしかないよね。
ドラフト無料とかもなかった気がする。
2017/06/11(日) 17:44:56.04ID:bT5ki42c0
MISRA-C はときとして理不尽な要求をしている気がする
2017/06/11(日) 18:01:31.88ID:q49UmmFG0
理不尽に見えるけど高信頼性のためには我慢してねって言うスタンスだから
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/
2017/06/12(月) 01:43:06.58ID:ZIdu3+Lh0
ウィンドウクラスって、何に使うん?
2017/06/12(月) 21:03:27.92ID:VDG2Ae3J0
MISRA-C 無しの、C言語は、製品に使ってはいけない。
品質が出荷レベルに達していないから

トヨタは、5% しか、MISRA-C を守っていないと聞いた。
100条なら、95で違反
2017/06/12(月) 21:08:37.51ID:SpclLUXp0
サブセットで十分なケースもある
2017/06/12(月) 21:21:24.13ID:t42bNJ0Ar
この句読点の使い方は得てしてリアルガイジ
MISRAとかいうのを信仰する奴とガイジとの相関は高いとみた
2017/06/12(月) 23:44:06.01ID:kzKhR3Vv0
そもそも無矛盾のルール体系は構築できないのでは
2017/06/13(火) 00:13:09.07ID:eF+wsRwS0
んなこたあない
2017/06/13(火) 02:09:41.46ID:LBvGuQYWa
無矛盾な公理体系は自己自身の無矛盾性を証明できない、
ってだけで無矛盾な体系は作れないとはいってない
2017/06/13(火) 07:35:05.39ID:siDT5/O8M
MISRA なんて有り体に言えばベストプラクティスだしね
守らなくても正しいソフトは作れる
ただバカが多いところだと守らせればありがちなバグが防げるって言う効果はある
460デフォルトの名無しさん (ワッチョイ 956f-ujiq)
垢版 |
2017/06/13(火) 18:24:46.63ID:+1XB2sfj0
ベストプラクティスというよりは古文書
てかここはC++スレなんだが
2017/06/13(火) 18:34:11.65ID:oGIP5B9w0
配列の中身で重複している要素をカウントしてカウントが一番多かった要素を取り出す
っていうプログラム作りたいので知恵貸してください

{1,2,2,5,2,5}だったら2が取り出せるみたいな
2017/06/13(火) 18:42:01.39ID:nMRvtxJa0
「宿題は自分でやりなさい」
先生たちもこのスレ監視してるからなw
2017/06/13(火) 18:56:37.43ID:oGIP5B9w0
宿題じゃねーよw
調べても重複削除くらいしかみつけられない
2017/06/13(火) 19:08:11.56ID:P4se3SJtd
mapを使うとかソートしてしまうとか?
2017/06/13(火) 19:09:11.39ID:n4I5+XGH0
日本語で書いてあるとおりのことをすればいいだけなのだが
2017/06/13(火) 20:25:19.98ID:siDT5/O8M
>>460
さすがにMISRAを古文書とか言う奴はおばかと言われてももしょうがないと思うぞ w
変換規則とかはよく考えられてるし
2017/06/13(火) 20:39:09.12ID:8eM6ZKoF0
で,MISRA-C をどこで見ればいいの?売っているの?
2017/06/13(火) 20:56:19.09ID:gcB4XgG8d
>>461
データやリソースによって適した実装方法が異なるな
2017/06/13(火) 20:56:21.35ID:+1XB2sfj0
だからそんなに考古学に興味あるんならググれよ
公式でPDF版£15で売ってるよ
繰り返し言うがここはC++スレだ
2017/06/13(火) 23:06:22.18ID:apqWicsH0
クソなコードしか思いつかなかった
http://ideone.com/3IBm07
2017/06/13(火) 23:56:53.24ID:G30+7Gz/0
それだと最大要素見つけるのに無駄に2ループするからこの方がよくね
http://ideone.com/AMCSuy
2017/06/14(水) 06:51:42.68ID:Bb4iazb50
どうもしっくり逝かんな
http://ideone.com/mH3sLq
2017/06/14(水) 06:58:07.10ID:xl37jtKCM
>>469
ひょっとして MISRA-C++ の存在も知らない老害さん?
2017/06/14(水) 07:13:45.93ID:97YMYHupr
「: public binary_function」
はて、規格のDで見たような
2017/06/14(水) 07:42:18.88ID:ROBFB8K40
>>461
配列の要素数 : n
要素の値の範囲 : m

計算オーダー
ソート&カウント : n log n
固定配列のカウンタ : max(n, m)
map のカウンタ : n log m
単純な2重ループ : n^2

かな
2017/06/14(水) 07:44:57.00ID:mEpEgwpO0
>>473
話のコンテキストも無視して突然MISRA-C++を出してくるとか頭大丈夫ですか?
2017/06/14(水) 07:51:46.28ID:ROBFB8K40
てことで、

配列の取りうる値が狭い場合、狭い範囲に変換できる場合はvectorによるカウンタ

取りうる値の種類が少ないことはわかっているが、値からインデックスに簡単に変換できない場合はmapによるカウンタ

一般的にはソート&カウント

による実装が良いのでは?
2017/06/14(水) 08:01:12.72ID:ROBFB8K40
ソート&カウント の場合
配列の値の大小比較の定義が必要
非破壊の場合は配列と同じサイズのメモリが必要

vectorカウンタの場合
配列の値からインデックス値に簡単に変換可能である必要がある
インデックス値分 x カウンタサイズ のメモリが必要

setカウンタの場合
配列の値の大小比較の定義が必要
配列の値の種類分 x setのノード のメモリが必要

単純2重ループの場合
一番要求することが少ない
配列の値が同じかどうか判別出来れば良い
2017/06/14(水) 08:07:23.67ID:ROBFB8K40
配列の値のコピーのコストが大きい場合
などを考えるとさらに別の方法が考えられる
2017/06/14(水) 08:16:37.97ID:SzLmysikM
>>476
話のコンテキストも理解できてない老害乙
2017/06/14(水) 08:32:13.08ID:1Ro22eP7M
みんなありがとう
やってみる
482デフォルトの名無しさん (スプッッ Sd51-RGMd)
垢版 |
2017/06/14(水) 08:51:35.81ID:JEM2dfxwd
いえいえ
2017/06/15(木) 02:16:45.12ID:Kprt2KgZ0
vectorのテンプレートに当てるクラスにはデフォルトコンストラクが必須なんでしたっけ?
2017/06/15(木) 02:57:56.05ID:WlVNVHON0
いいえ
03まではコピーできること
11からは破棄できること
が最低限の要件
2017/06/15(木) 05:30:50.78ID:HQ6fr84VM
>>483
必要だよ
2017/06/15(木) 09:11:26.58ID:qU51R9EPa
使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね
必要な場面が思い付かんし
2017/06/15(木) 10:49:56.10ID:cMMWNP19M
std::vector<MyObject> v;
これMyObjectにデフォルトコンストラクタないとコンパイルできなくない?
2017/06/15(木) 11:01:39.88ID:aq+4THbXr
>>484
根拠は?
2017/06/15(木) 11:19:41.25ID:qU51R9EPa
>>487
コンパイルできるよ
https://ideone.com/J9k1y6
2017/06/15(木) 11:23:27.43ID:L9OZrg3x0
>>487
その例のその時点ではvの要素数は0でMyObjectは一つも構築されない
そしてテンプレートの性質として要求されない部分の実体化はされないので
実際には呼ばれない部分のコードがコンパイルエラーにはなる問題にもあたらない
2017/06/15(木) 11:50:20.24ID:T9X0CufJd
その理屈だとデストラクタも不要になるが、実際はデストラクタは必要
492デフォルトの名無しさん (ワッチョイ 8baa-vAEL)
垢版 |
2017/06/15(木) 12:01:45.59ID:UVt8Gat10
>>491
そりゃvectorのデストラクタで要素のデストラクタが呼ばれる(テンプレートのインスタンス化が行われる)んだから
2017/06/15(木) 12:32:05.19ID:TLt9F5bfd
>>486
resizeは?
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つの方が使える
2017/06/15(木) 12:53:22.51ID:T9X0CufJd
>>492
中身は知ってるよ
>>490の理屈と合わないって言ってるだけで
2017/06/15(木) 14:19:10.82ID:aq+4THbXr
「使うメンバ関数に依るけどデフォルトコンストラクタが必要なものはなくね」
 ↓
「resizeは?」
 ↓
「コピーコンストラクタがあれば引数2つの方が使える」

これがイケヌマと言うやつか
2017/06/15(木) 15:13:39.32ID:0w39VBC10
333/+C/333
}[amo]*7*
%/$/@0000/*/"2BTOLA"~~
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%,,,
501デフォルトの名無しさん (ワッチョイ 8baa-vAEL)
垢版 |
2017/06/16(金) 09:54:15.30ID:rTwb7eLL0
>>498
え?resizeするのにデフォルトコンストラクタ必要じゃないよね?
2017/06/16(金) 10:48:52.10ID:+l0M7jEud
なんで必要じゃないと思うんだか
2017/06/16(金) 10:51:59.72ID:+l0M7jEud
resizeとサイズ指定のコンストラクタ
この2個は必要

他に必要なのが有るかは知らない
504デフォルトの名無しさん (ササクッテロレ Spab-O+YK)
垢版 |
2017/06/16(金) 13:52:01.14ID:uEZP+i89p
ぜんぜんわからない
僕たちは雰囲気でvectorを使っている
2017/06/16(金) 18:08:28.52ID:h6HoRUoNr
>>496のような文脈を理解できず関係ないことを言い出す残念なオツムだと
>>501のようにさらにとんちんかんなことを言い出すのだろうきっと
2017/06/16(金) 19:00:27.85ID:exN5gWxV0
2chでみんなが文脈を読んで書いてると思うのもどうかと思う

>>496 は質問とか流れとか関係なく単に思った事を書いたんだろうなと思う
>>501 は思考力も行動力も無い可愛そうな人なんだろうなと思う
2017/06/16(金) 19:06:58.58ID:exN5gWxV0
おれも流れを無視して書いてみよう

自分でvectorを作ってみると躓くのが、メモリのアロケートや解放を伴わない、指定位置に対してのコンストラクタやデストラクタの呼び出し
ここは他の実装をカンニングしてしまった
他は特に難しいところはなく、ひたすらメンバー関数を作る作業

vectorはlistやmapに比べると作るのが簡単
508デフォルトの名無しさん (ワントンキン MMaa-vAEL)
垢版 |
2017/06/16(金) 20:32:33.08ID:1QoHt37uM
むしろ >>486 がresizeの要素数だけ指定したときにデフォルトコンストラクタが使われるということぐらい解ってて言ってるように見えるんだけどな。C++98まではオーバーロードですらない全く同じメンバーだったわけで。

文脈読んでないのはどっちなんだろうね。
2017/06/16(金) 20:58:35.54ID:+l0M7jEud
イミフ
解説よろしく
2017/06/16(金) 23:20:55.70ID:jqjhiiMFr
単に思ったことを書いてみたすごい例は>>494だな
読み返すと深いものがある
2017/06/18(日) 14:45:58.32ID:pAWWq9QO0
エピス何とかさんって
エピステーメー 迷惑 でググると出てくる人?
2017/06/18(日) 15:04:30.19ID:maGnATACM
そう
2017/06/18(日) 17:37:06.92ID:qo9bGziFM
ぐぐって最初に出てきた記事を読んできたけど、どっちもどっちな感じだなあ。

ただ一つ言えるのは、エピスの記事はいつもcounterが題材でとてもつまらない。
514デフォルトの名無しさん (ワッチョイ aeaa-vAEL)
垢版 |
2017/06/19(月) 02:44:16.89ID:vY2cw8HX0
ぐぐって最初に出てきた記事を読んできたけど、どちらかというと記事の主の方が苦しい言い訳してる感じがするなぁ。
ただ一つ言えるのは、てらているでえぴすてーめーの解答見てると質問者の理解を手助けするような解答にはみえないから好きではない。
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はファイルスコープ間で共通
で合ってる?
2017/06/19(月) 08:39:44.53ID:S/voQGxrr
現規格ではfile scopeという言葉の定義が無いことに気付いた
2017/06/19(月) 08:46:39.99ID:9+UYKLHD0
hogeの方はextern付けないと大量生成されるぞ
2017/06/19(月) 08:47:46.44ID:9+UYKLHD0
あ、staticか…わざとやっているのか
2017/06/19(月) 10:43:51.86ID:m1J/TEED0
>>515
合ってない
以上
2017/06/19(月) 10:53:54.51ID:S/voQGxrr
注意事項は有るとして、合っているかと言えば合っていると思ったのだがはて
2017/06/19(月) 11:20:57.70ID:ClMyuu520
>>519
namespace Aが付けばstaticはファイルに依存しないクラスのstaticメンバーみたいになるということですかね?
2017/06/19(月) 11:40:33.07ID:UZhaSadud
変数のアドレスを確認すればわかるじゃん。
2017/06/19(月) 12:39:33.09ID:Edn2ErbFa
>>521
そんなことない
あなたが>>515で言ってたのであってる

正確にはファイルスコープじゃなくて翻訳単位だが
2017/06/19(月) 12:43:52.17ID:ClMyuu520
ですよね
ありがとうございます
2017/06/19(月) 16:50:18.24ID:OcegvzUdr
>>522
ほれ
http://ideone.com/RH0dUb
質問者がこういう確認をしてしまう可能性は考えなかったのかね?
2017/06/19(月) 17:22:49.29ID:0iIdkSRqd
さすがににそれはテスト方法が悪い
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況