次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part134
http://mevius.5ch.net/test/read.cgi/tech/1516406742/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
■長いソースを貼るときはここへ。■
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++相談室 part135
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 5fcb-q1Nq)
2018/03/31(土) 20:20:06.25ID:o3PNwIlC02デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/03/31(土) 22:59:04.29ID:Nj0xu+770 この64ビットが主流になりつつある時代にSTL使うとファイルサイズガァとかよく耳にしますが、時代についてこれていない老いぼれの戯言なのでとっとと見限って先に進みましょう
----- テンプレ ここまで -----
----- テンプレ ここまで -----
3デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/04/01(日) 00:05:25.36ID:DhlCxYuo0 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>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
---- テンプレ ここまで ----
4デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/04/01(日) 00:06:31.91ID:DhlCxYuo05デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/01(日) 00:37:05.49ID:O5KM55R90 両方テンプレじゃないから死ね
6デフォルトの名無しさん (ワッチョイ d3cb-q1Nq)
2018/04/01(日) 01:00:30.68ID:EwuQ9U5u0 えー、どっちもワシ(>>1)が貼り付けたわけじゃないのにー
7デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/04/01(日) 01:13:57.19ID:lZy6W71f0 このRTL使うとファイルサイズが減るとかおもいっきり頭悪い回答した奴とSTLをごっちゃにするテンプレいい加減やめれ
STL使っている奴=無能に見えるではないか
STL使っている奴=無能に見えるではないか
8デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/04/01(日) 02:21:27.54ID:lZy6W71f0 コレ老いぼれが仕掛けているマッチポンプにも見えなくはないしな
毎回毎回クソみたいなテンプレ貼りまくって見苦しいぞまったく
毎回毎回クソみたいなテンプレ貼りまくって見苦しいぞまったく
9デフォルトの名無しさん (ワッチョイ 9312-3n/u)
2018/04/03(火) 00:14:36.74ID:xAju6wwe0 C++を原発制御に使うか?という質問に帰着する
10デフォルトの名無しさん
2018/04/03(火) 00:33:19.68 >>9
特に問題ないやろ
特に問題ないやろ
11片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 00:38:42.54ID:GFbsNNGId 原発にヒープメモリーは使いたくないだろ。
2018/04/03(火) 00:59:39.78
原発も飛行機も、自動車も?固定メモリ空間で、確保解放なんて一瞬の手間すら惜しんで全部上書きでしょ(知らんけど)
13片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 01:34:24.25ID:GFbsNNGId インターネットにつながってる原発とか、USB接続ができる原発なんてあり得ないから。フロッピーもダメ。ROMカセットならギリギリOK。
14片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 01:37:02.89ID:GFbsNNGId EMP対策とか防火対策とか銃器対策もしないといけない。
15デフォルトの名無しさん (ワッチョイ 5b6f-kUw7)
2018/04/03(火) 01:39:39.79ID:sF82ozBk0 確実な「保証」が必要だからなぁ。
リアルタイム性の要求もそうだが、
ありそうにないほどの最悪条件でもメモリ確保に失敗してはいけないので、
確実に見積もれるようにするにはヒープメモリの使用を避けるのは妥当なことも有りうる。
メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
起こりうるすべてのパターンで new が失敗しないことを検証するなんて
面倒くさい (というより事実上不可能な) ことは出来んだろ。
本当にシビアな制御が必要な原発レベルなら定理証明系とかも使ってるんじゃないかな。
リアルタイム性の要求もそうだが、
ありそうにないほどの最悪条件でもメモリ確保に失敗してはいけないので、
確実に見積もれるようにするにはヒープメモリの使用を避けるのは妥当なことも有りうる。
メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
起こりうるすべてのパターンで new が失敗しないことを検証するなんて
面倒くさい (というより事実上不可能な) ことは出来んだろ。
本当にシビアな制御が必要な原発レベルなら定理証明系とかも使ってるんじゃないかな。
16デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/04/03(火) 01:44:54.43ID:0fcGXeNT0 https://i.imgur.com/oNGIigg.gif
全部アナログに任せてるから操作間違ってこんなんになっているんやろ
全部アナログに任せてるから操作間違ってこんなんになっているんやろ
17デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 01:50:56.68ID:i3mVMD7F0 コントロールルームの写真見るとありえんくらい計器とボタンついてるから
ソフトウェア自体ほとんど使われてないだろうな
ソフトウェア自体ほとんど使われてないだろうな
18片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 01:57:10.44ID:GFbsNNGId マウスで原子炉の制御棒を操作するのか? 冗談すぎる。
19片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:01:20.38ID:GFbsNNGId 作業員に1人テロリストが混ざっていたとしても、原子炉を暴走させることが出来ないようなシステムにしないといけない。
20デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 02:13:51.81ID:i3mVMD7F0 不便にすることが最も外部からの攻撃に対して強い
21デフォルトの名無しさん (ワッチョイ 9381-kUw7)
2018/04/03(火) 02:15:27.83ID:mF5KVDd50 二人が同時にキースイッチをカチッとオンにすると発射!
22片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:23:04.91ID:GFbsNNGId 原発関係の諜報活動はかなりシビアで、どこかの国では、国家犯罪的なコンピューターウイルスにやられて原発が稼働できなくなったらしい。
23片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:32:26.64ID:GFbsNNGId 16bit時代は、友人にウイルスを集める奴が、居たよな。今では所持だけで犯罪になっちゃったけど。
24デフォルトの名無しさん (ワッチョイ 9381-kUw7)
2018/04/03(火) 02:35:57.94ID:mF5KVDd50 原発は既に発電原価が他の発電方法よりも割高なんで、やめても良い
核廃棄物の処分方法すら未だに手が付けられないんだし
他の国は土地があって置き場所に困らないが、日本はそうでは無いよ
核廃棄物の処分方法すら未だに手が付けられないんだし
他の国は土地があって置き場所に困らないが、日本はそうでは無いよ
25デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 02:41:11.28ID:i3mVMD7F026片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:46:57.19ID:GFbsNNGId あの頃は、ウイルス対策の概念が浸透してなくて、雑誌の付録にもウイルスが付いていたらしい。MS-DOSとWin9x時代のデジタル発掘には危険が伴う。
27片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:51:53.34ID:GFbsNNGId ウイルス蔓延に対する答えが、プログラムファイルの保護、ウイルス対策、UAC、SmartScreen、デジタル署名なんだよな。
28片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 02:53:31.90ID:GFbsNNGId C++20では、生ポインタが非推奨になるんだよな?
29デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 02:57:29.37ID:i3mVMD7F0 >>28
生ポインタを取り出すstd::to_addressが追加されるんだが
生ポインタを取り出すstd::to_addressが追加されるんだが
30片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-MT4c)
2018/04/03(火) 03:08:11.37ID:GFbsNNGId じゃ、勘違い。
株価を見るに、インテルも安泰じゃないようだ。
株価を見るに、インテルも安泰じゃないようだ。
31デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 03:11:08.11ID:i3mVMD7F0 リスクオフで世界的に株安なだけでインテルの業績が悪化しているわけではない
32デフォルトの名無しさん
2018/04/03(火) 07:51:19.9233デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/04/03(火) 08:03:30.55ID:wc7Iq10c0 ん?ノートがARMにでもなるの?ちょっとむりない?
34デフォルトの名無しさん (エムゾネ FFb3-eDjY)
2018/04/03(火) 08:15:32.96ID:4cz+HfdtF 独自CPUだよ
林檎だしアーキから独自じゃないの?
林檎だしアーキから独自じゃないの?
35デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/04/03(火) 09:37:51.60ID:wc7Iq10c0 >>34
あいほんはARMベースじゃなかったっけ。自社カスタムしてるけど。
あいほんはARMベースじゃなかったっけ。自社カスタムしてるけど。
36デフォルトの名無しさん (ワッチョイ 198a-/mn0)
2018/04/03(火) 10:39:38.27ID:3tygYxHf0 仮にインテルから自社製造に切り替えが本当だったとしても、
ARMかAMDみたいな互換のどちらかじゃないかな
仮にARMだったらRISCに戻ることになるのか
そんな変更を強行出来るのはアップルくらいなもんだな
ARMかAMDみたいな互換のどちらかじゃないかな
仮にARMだったらRISCに戻ることになるのか
そんな変更を強行出来るのはアップルくらいなもんだな
37デフォルトの名無しさん (ブーイモ MMab-q1Nq)
2018/04/03(火) 11:22:41.72ID:8N8wvrwRM これまでのニュース記事
・独自CPUを開発中
・iphoneアプリをmacbookで動かせるようにする
・1000ドル未満のmacbookを追加する
つまりはこんなとこでしょ。
・macbookはARMアーキのカスタムCPU
・proはIntel CPUとカスタムCPUのデュアル構成
スレチなのでもうやめる
・独自CPUを開発中
・iphoneアプリをmacbookで動かせるようにする
・1000ドル未満のmacbookを追加する
つまりはこんなとこでしょ。
・macbookはARMアーキのカスタムCPU
・proはIntel CPUとカスタムCPUのデュアル構成
スレチなのでもうやめる
38デフォルトの名無しさん (ワッチョイ b37e-YG9/)
2018/04/03(火) 12:06:02.87ID:i3mVMD7F0 >>32
最近の下げ調子からちょっと戻したところをイースター休暇を狙って仕掛けがあったんだが
個別のちょっとしたニュースの影響なんて掻き消える事態なんだよ
ITだけでもほぼ全部下げてる
https://stocks.finance.yahoo.co.jp/us/ranking/?kd=4&tm=d
アップル 前日比-1.10(-0.66%)
マイクロソフト 前日比-2.75(-3.01%)
アマゾン・ドット・コム 前日比-75.35(-5.21%)
IBM -3.36(-2.19%)
グーグル -25.32(-2.45%)
インテル 前日比-3.16(-6.07%)
エヌビディア -10.54(-4.55%)
AMD 前日比-0.52(-5.17%)
クアルコム -1.60(-2.89%)
オラクル -0.74(-1.62%)
フェイスブック -4.40(-2.75%)
ツイッター 前日比-0.97(-3.34%)
ヒューレット・パッカード -0.78(-3.56%)
シスコ・システムズ -1.88(-4.38%)
最近の下げ調子からちょっと戻したところをイースター休暇を狙って仕掛けがあったんだが
個別のちょっとしたニュースの影響なんて掻き消える事態なんだよ
ITだけでもほぼ全部下げてる
https://stocks.finance.yahoo.co.jp/us/ranking/?kd=4&tm=d
アップル 前日比-1.10(-0.66%)
マイクロソフト 前日比-2.75(-3.01%)
アマゾン・ドット・コム 前日比-75.35(-5.21%)
IBM -3.36(-2.19%)
グーグル -25.32(-2.45%)
インテル 前日比-3.16(-6.07%)
エヌビディア -10.54(-4.55%)
AMD 前日比-0.52(-5.17%)
クアルコム -1.60(-2.89%)
オラクル -0.74(-1.62%)
フェイスブック -4.40(-2.75%)
ツイッター 前日比-0.97(-3.34%)
ヒューレット・パッカード -0.78(-3.56%)
シスコ・システムズ -1.88(-4.38%)
39デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/04/03(火) 21:56:39.00ID:eMYrGYMY0 >>15
>メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
これに関しては起動時にまとまったメモリを終了処理用にmalloc()しておくという古典的なテクニックがある
(1 MBのメモリを起動時にmalloc()しておき、ヒープメモリが無くなったらそいつを解放すれば
終了処理に1 MB使える
メイヤーズの本にも載ってる
>メモリ確保に失敗したら安全な終了シーケンスの実行も難しいだろうし。
これに関しては起動時にまとまったメモリを終了処理用にmalloc()しておくという古典的なテクニックがある
(1 MBのメモリを起動時にmalloc()しておき、ヒープメモリが無くなったらそいつを解放すれば
終了処理に1 MB使える
メイヤーズの本にも載ってる
40デフォルトの名無しさん (ワッチョイ 4104-2GNe)
2018/04/04(水) 06:41:13.40ID:5k6f4LQE0 >>39
それJAVAがやっててすごい評判悪い。
それJAVAがやっててすごい評判悪い。
41デフォルトの名無しさん (ブーイモ MM85-vInS)
2018/04/04(水) 08:49:31.33ID:Ls5GP4D6M Javaの評判で良いのなんて心当たり無いかも
42デフォルトの名無しさん (ワッチョイ 5be7-Cooj)
2018/04/04(水) 20:06:00.30ID:kRSnmS570 Java最高!プログラムの未来はJavaにある!面倒なメモリ管理もなくなるし移植でコード書き直す必要もなくなるぞ!
それに引き換えC++(笑)ときたら、数年後には特殊用途以外では消えてるね。まあその特殊用途もCとアセンブラで充分だけどな(プ
とか言われてた時代もあったんです
本当だよ
それに引き換えC++(笑)ときたら、数年後には特殊用途以外では消えてるね。まあその特殊用途もCとアセンブラで充分だけどな(プ
とか言われてた時代もあったんです
本当だよ
43デフォルトの名無しさん (ワッチョイ d34c-eTW6)
2018/04/04(水) 21:24:30.34ID:g8Q3GJCm0 Java実行するチップもあったが夢の跡
44デフォルトの名無しさん (ワッチョイ d3bd-qsUw)
2018/04/04(水) 22:54:27.67ID:aEQNvaBv0 C++とかいまや高位合成でそのままハードウェアに
45デフォルトの名無しさん (ワッチョイ 9334-3URi)
2018/04/04(水) 22:56:36.02ID:do3bz0SM0 Javaとか百害あって一利あるかないかのレベル
46デフォルトの名無しさん (ワッチョイ 15e7-/wgL)
2018/04/05(木) 05:14:09.23ID:KAa2PFgc0 class Manager {
public:
template <class T>
static void add(std::string key) {
auto inst = std::make_shared<SuperClass>(new T());
Manager::m_data[key] = inst;
}
}
使用例
Manager::add<SubClass>("key1");
こんなことがしたいんだけどnew T()のところでエラーが出る
C2248 'SubClass::SubClass': private メンバー (クラス 'SubClass' で宣言されている) にアクセスできません。
解決策を教えてください
SubClassはSuperClassから派生させてコンストラクタSubClass(){}を追加しただけです
public:
template <class T>
static void add(std::string key) {
auto inst = std::make_shared<SuperClass>(new T());
Manager::m_data[key] = inst;
}
}
使用例
Manager::add<SubClass>("key1");
こんなことがしたいんだけどnew T()のところでエラーが出る
C2248 'SubClass::SubClass': private メンバー (クラス 'SubClass' で宣言されている) にアクセスできません。
解決策を教えてください
SubClassはSuperClassから派生させてコンストラクタSubClass(){}を追加しただけです
47デフォルトの名無しさん (ワッチョイ 15e7-/wgL)
2018/04/05(木) 05:18:59.30ID:KAa2PFgc0 すみません派生クラスのコンストラクタにpublic:つけてませんでした・・・
48デフォルトの名無しさん (ワッチョイ 15e7-9DAQ)
2018/04/05(木) 05:45:20.00ID:KAa2PFgc0 いろいろ修正したら解決しました
49デフォルトの名無しさん (スッップ Sdea-+9ji)
2018/04/05(木) 08:26:54.03ID:L9k+v76Td make_shared使ってるのにnewするなんて
50デフォルトの名無しさん (ワッチョイ 15e7-9DAQ)
2018/04/05(木) 08:38:48.75ID:KAa2PFgc0 newもけしました
51デフォルトの名無しさん (ワッチョイ 7ee7-xjHw)
2018/04/05(木) 20:15:16.61ID:SmaaQ+MA0 こうしなさい
auto inst = std::make_shared<T>();
Manager::m_data[key] = std::move(inst);
auto inst = std::make_shared<T>();
Manager::m_data[key] = std::move(inst);
52デフォルトの名無しさん (ブーイモ MM39-0MDt)
2018/04/05(木) 20:38:45.12ID:B7cMgYJ4M まずはManagerとかControllerとかいった名前をたやすく使うのをやめるべき。
もちろんそういった名前が適切な場合も多々あるが、初心者が使う場合、たいていオブジェクト指向設計に失敗している。
もちろんそういった名前が適切な場合も多々あるが、初心者が使う場合、たいていオブジェクト指向設計に失敗している。
53デフォルトの名無しさん (ワッチョイ 2d7f-vJpg)
2018/04/05(木) 20:44:22.17ID:Qwh0cfWA0 その主張前にも聞いたけど実にくだらない
54デフォルトの名無しさん (ワッチョイ 2d04-43s8)
2018/04/05(木) 20:54:24.03ID:BAXwN9iv055デフォルトの名無しさん (ワッチョイ 7ee7-xjHw)
2018/04/05(木) 21:08:32.94ID:SmaaQ+MA0 違うよ
ちゃんと実際の型でmake_sharedしてからshared_ptr<SuperClass>に入れろって言ってるの
ちゃんと実際の型でmake_sharedしてからshared_ptr<SuperClass>に入れろって言ってるの
56デフォルトの名無しさん (ワッチョイ ca23-Q1NZ)
2018/04/05(木) 21:42:13.44ID:kzoSJIbv0 せっかく make_shared 使うのに明示的に生ポインタを new する人って…
というようなことだろ
というようなことだろ
57デフォルトの名無しさん (ワッチョイ 2d04-43s8)
2018/04/05(木) 21:56:01.48ID:BAXwN9iv0 あー、なるほど。すまんね。
58デフォルトの名無しさん (ワッチョイ ca34-glfZ)
2018/04/06(金) 01:37:22.74ID:Mgh91ASd0 auto変数はスコープ外れたらどうせ破棄されるしmove要らない
59名無し@キムチ (ワッチョイ 25b3-1Lkb)
2018/04/06(金) 20:16:12.73ID:VpnYoE0I0 いままでC♯使ってたけど、最近つーかおととしくらいからC++使い始めたんだよ。
そしていろいろ見ているうちにファイルの作成→3Dシーンというのがあったので、作成したら、
何もオブジェクトの入ってないシーンだけの画面が出てきたわけよ。
このシーンにオブジェクトを入れるにはどうすればいいの?
またウインドウズのGUIの実行ファイルからこのシーンを出すにはどうすればいいの?
つーかそもそもGUIの実行ファイルからこのシーンを出せるの?
このようにまだ右も左もわかってない状態なんで、よろしくご教授お願いしますよw
そしていろいろ見ているうちにファイルの作成→3Dシーンというのがあったので、作成したら、
何もオブジェクトの入ってないシーンだけの画面が出てきたわけよ。
このシーンにオブジェクトを入れるにはどうすればいいの?
またウインドウズのGUIの実行ファイルからこのシーンを出すにはどうすればいいの?
つーかそもそもGUIの実行ファイルからこのシーンを出せるの?
このようにまだ右も左もわかってない状態なんで、よろしくご教授お願いしますよw
60名無し@キムチ (ワッチョイ 25b3-1Lkb)
2018/04/06(金) 20:17:16.93ID:VpnYoE0I0 >最近つーかおととしくらいからC++使い始めたんだよ。
ごめん、おとといくらいからの間違いだったよw
よろしくご教授たのむよ!!
ごめん、おとといくらいからの間違いだったよw
よろしくご教授たのむよ!!
61デフォルトの名無しさん (アウアウカー Sa05-KAlc)
2018/04/06(金) 20:26:20.68ID:TFjbUU5Da おととい来やがれ
と言ってみる
と言ってみる
62片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 20:34:38.59ID:eB6IhESGd >>59
自分の環境くらい理解しよう。UnityなのかUnrealなのか。
自分の環境くらい理解しよう。UnityなのかUnrealなのか。
63デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/06(金) 20:36:14.26ID:gYiRH0WM0 何を言っているのかわからないし
特定のプラットフォームの話ならそっちで聞くべき
特定のプラットフォームの話ならそっちで聞くべき
64デフォルトの名無しさん (アウアウオー Sa72-RtkZ)
2018/04/06(金) 21:01:12.49ID:RWHjeoGDa YAMLをC++で読む簡単な方法はなんですか?
LibYAMLなんですかね
LibYAMLなんですかね
65片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:11:46.44ID:eB6IhESGd66名無し@キムチ (ワッチョイ 25b3-1Lkb)
2018/04/06(金) 21:18:03.84ID:VpnYoE0I0 >>62
いや、いま使ってたのはUnityでC♯だったが、
それとは別にVisualC++とFBXSDKでってのをやってみようと思っておとといから始めたわけだよ。
でFBXファイルを読み込んでノードの取得あたりまでは進んだけど、
よく見るとVisualC++のファイル新規作成に3Dシーン(FBX)ってのがあるわけ。
もしやこれ使うとFBXSDKはいらないのかな?とも思ったりしたんだけど、
何しろまだ右も左もわからないし、その3Dシーンにオブジェクトを置くやりからもわからないし、
そのシーンを一応とってつけてつくってみたウインドウズ実行ファイルから呼び出すためのコードの書き方もわからないしで、
こうやってみなさまにご教授を求めた次第ですよ!!
いや、いま使ってたのはUnityでC♯だったが、
それとは別にVisualC++とFBXSDKでってのをやってみようと思っておとといから始めたわけだよ。
でFBXファイルを読み込んでノードの取得あたりまでは進んだけど、
よく見るとVisualC++のファイル新規作成に3Dシーン(FBX)ってのがあるわけ。
もしやこれ使うとFBXSDKはいらないのかな?とも思ったりしたんだけど、
何しろまだ右も左もわからないし、その3Dシーンにオブジェクトを置くやりからもわからないし、
そのシーンを一応とってつけてつくってみたウインドウズ実行ファイルから呼び出すためのコードの書き方もわからないしで、
こうやってみなさまにご教授を求めた次第ですよ!!
67片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:21:11.15ID:eB6IhESGd 私の認識が正しければ、SDKはSoftware Development Kitだから、実際の実行時に使うライブラリーのことだろうよ。
68片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:23:42.24ID:eB6IhESGd 実行時に動かすなら、SDKにリファレンス(またはドキュメント)があるはずだ。
69片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:27:19.39ID:eB6IhESGd ドキュメントがないなら、そんなマイナーなフレームワークを使うな、で終わり。
70片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:29:52.65ID:eB6IhESGd ゲーム製作板か、CG板の方がいいかもしれない。
71名無し@キムチ (ワッチョイ 25b3-1Lkb)
2018/04/06(金) 21:32:34.54ID:VpnYoE0I0 >>68
まだ正式なリファレンスはいろいろ暇がなくて読んでない。
日本語で簡単に解説してあるウェブサイトは見たけど、
取得したFBXファイルのいろんな情報を文字列で表示するプログラムが載ってるだけで、
実際にその3Dオブジェクトを画面に表示する方法が載ってない。日本語のサイトで解説してあるのは、どうもここまでみたいなので、
やはり英語の正式なリファレンスを見ないとダメかな?www
まだ正式なリファレンスはいろいろ暇がなくて読んでない。
日本語で簡単に解説してあるウェブサイトは見たけど、
取得したFBXファイルのいろんな情報を文字列で表示するプログラムが載ってるだけで、
実際にその3Dオブジェクトを画面に表示する方法が載ってない。日本語のサイトで解説してあるのは、どうもここまでみたいなので、
やはり英語の正式なリファレンスを見ないとダメかな?www
72片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:35:02.97ID:eB6IhESGd ゲーム製作板に、くわしく知ってる人が居るかも知れない。
73片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:39:40.26ID:eB6IhESGd 業界へ出るなら、英語アレルギーは克服すべし。自動翻訳が使えれば、詠めるかもしれない。蘭学から学べることは多い。
74名無し@キムチ (ワッチョイ 25b3-1Lkb)
2018/04/06(金) 21:40:42.10ID:VpnYoE0I0 >>70
>ゲーム製作板か、CG板の方がいいかもしれない。
いやゲームはもう作りたくないし、CGも特に興味ない。
実はMakeHumanみたいな3Dキャラ作成ツールがつくりたくてね。
まだ始めたばかりで、そこまでの距離は100億光年ばかりあるけど・・・
これってやっぱりちゃんとしたプログラム技術板向きの話題だよね?
>ゲーム製作板か、CG板の方がいいかもしれない。
いやゲームはもう作りたくないし、CGも特に興味ない。
実はMakeHumanみたいな3Dキャラ作成ツールがつくりたくてね。
まだ始めたばかりで、そこまでの距離は100億光年ばかりあるけど・・・
これってやっぱりちゃんとしたプログラム技術板向きの話題だよね?
75片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:42:51.27ID:eB6IhESGd 器の小さい人には教えないよ。時間のムダだからね。
76片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:48:02.69ID:eB6IhESGd ゼロから3D作りたいなら、DirectX, OpenGL, Valkanあたりを勉強することになる。
しかし、ゲームエンジンがなければ、動く3Dは手間がかかる。
しかし、ゲームエンジンがなければ、動く3Dは手間がかかる。
77デフォルトの名無しさん (アウアウオー Sa72-RtkZ)
2018/04/06(金) 21:49:10.94ID:RWHjeoGDa >>65
ありがとうございます!
ありがとうございます!
78デフォルトの名無しさん (アウアウオー Sa72-RtkZ)
2018/04/06(金) 21:50:43.17ID:RWHjeoGDa79片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:51:55.72ID:eB6IhESGd iPhoneXでリアルタイムでVtuber作れる時代に素人が3Dモデラー作るのは、技術のムダだろう。
80片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 21:56:32.87ID:eB6IhESGd 数学のベクトル、射影、非ユークリッド幾何学が理解できるくらいの数学力がないと魚眼レンズはムリだろう。ムリムリ。
81片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 22:00:38.96ID:eB6IhESGd 物理学的に考えると、魚眼は屈折率の差から発生する現象だから、モデラーの物体に屈折率を設定するだけでいい。
82片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 22:05:13.65ID:eB6IhESGd カメラの特性で、レンズの広角が設定できればそれに越したことはないが。
83片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 22:10:52.66ID:eB6IhESGd 「広角 DirectX」で検索。
https://msdn.microsoft.com/ja-jp/magazine/dn745869.aspx
https://msdn.microsoft.com/ja-jp/magazine/dn745869.aspx
84デフォルトの名無しさん (ブーイモ MMea-VY9m)
2018/04/06(金) 22:14:45.90ID:Qe7eZ8vzM85デフォルトの名無しさん (アウアウオー Sa72-RtkZ)
2018/04/06(金) 22:23:28.39ID:RWHjeoGDa86デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/06(金) 22:30:22.55ID:gYiRH0WM0 ゲーム作ろうと思っても大体はゲームエンジン作り始めて途中で飽きてやめる
87片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 22:30:40.49ID:eB6IhESGd CGもオブジェクト指向になっているから、撮影スタジオで実際に物体やカメラの位置を決めるのと同じように、シーンを構築すれば、それが映像になる。
88片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 22:57:17.05ID:eB6IhESGd ニュースセンターで使われるような、再現CGを自由に作れるようになったら、引っ張りダコだよ。
89片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdea-90Yi)
2018/04/06(金) 23:06:06.99ID:eB6IhESGd そうなったら、映像クリエイターになって仕事を請け負って独立できるぞ。プログラマーよりも働き甲斐があるかもしれん。
90デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/06(金) 23:07:50.12ID:gYiRH0WM0 どっちも薄給
91デフォルトの名無しさん (ワッチョイ 6db3-psu8)
2018/04/07(土) 00:36:31.30ID:Y5tUUVb30 やたら伸びてると思ったら1人あたりのレス数多すぎだろ(しかも知らんことに口出し過ぎ
fbxsdkは昔ちょっとしか触ってないが、多分そのVSの3Dシーン作成ってのは3Dのモデルやシーンを.fbxに書き出すプロジェクトじゃね?
そういうのは多分Maya使った方が早いしfbxsdkはどっちにしても要る
あとDirect3D使うならそっちのスレ行ってくれ
fbxsdkは昔ちょっとしか触ってないが、多分そのVSの3Dシーン作成ってのは3Dのモデルやシーンを.fbxに書き出すプロジェクトじゃね?
そういうのは多分Maya使った方が早いしfbxsdkはどっちにしても要る
あとDirect3D使うならそっちのスレ行ってくれ
92デフォルトの名無しさん (アウアウカー Sa05-ysxi)
2018/04/08(日) 02:00:13.10ID:xND6FkKma C++で用意されているキャストと
cのi=(int)j みたいなキャストの違いがよくわからない
cのi=(int)j みたいなキャストの違いがよくわからない
93デフォルトの名無しさん (ワッチョイ ca34-glfZ)
2018/04/08(日) 02:09:06.48ID:+gqqNGFK0 static_cast … 無理のない互換性のある変換。
reinterpret_cast … int から void* 等への強制変換 c の ()キャストと同じ。
const_cast … const 付きから const を無くしたりまたはその逆の変換。
dynamic_cast … 実行時型情報を使って実行時に型情報で互換性を見比べながらの変換。実行時型情報とのリンクが必須。
reinterpret_cast … int から void* 等への強制変換 c の ()キャストと同じ。
const_cast … const 付きから const を無くしたりまたはその逆の変換。
dynamic_cast … 実行時型情報を使って実行時に型情報で互換性を見比べながらの変換。実行時型情報とのリンクが必須。
94はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fe6f-vJpg)
2018/04/08(日) 03:14:37.94ID:RvzgDq0H0 >>92
C スタイルのキャストは dynamic_cast 以外の C++ スタイルキャストを兼ね備えている。
安全なキャストも危険なキャストも見た目にわかんないから、
うっかり危険なキャストをしないようにカテゴリ分けしたやつを使った方がいいなって話。
reinterpret_cast や const_cast がどうしても必要な状況になったら、
それはそのプログラムが悪いデザインだというサインだ。
(デバイスドライバとか OS とかの低水準プログラムだと仕方なく使う機会は多いかもしれないけど)
C スタイルのキャストは dynamic_cast 以外の C++ スタイルキャストを兼ね備えている。
安全なキャストも危険なキャストも見た目にわかんないから、
うっかり危険なキャストをしないようにカテゴリ分けしたやつを使った方がいいなって話。
reinterpret_cast や const_cast がどうしても必要な状況になったら、
それはそのプログラムが悪いデザインだというサインだ。
(デバイスドライバとか OS とかの低水準プログラムだと仕方なく使う機会は多いかもしれないけど)
95デフォルトの名無しさん (ワッチョイ 2d93-SKFW)
2018/04/08(日) 06:15:21.60ID:fQMOYFpe0 『プログラミング言語C++』第4版のどこだったかに、
「危険なキャストを行っているソース箇所が目立つように
reinterpret_cast<型> のような長い綴りで見た目もスマートでない
キーワードを選んで導入した」みたいなことが書いてあったな。
「危険なキャストを行っているソース箇所が目立つように
reinterpret_cast<型> のような長い綴りで見た目もスマートでない
キーワードを選んで導入した」みたいなことが書いてあったな。
2018/04/08(日) 11:13:04.50ID:NQAA1W7E0
すいませんchar str[1000]に格納されてるこの文字列を、str2[0][]=64 str2[1][]=9 という感じで上手くデータだけ取り出す方法は無いでしょうか
http://i.imgur.com/MMYajmf.jpg
http://i.imgur.com/MMYajmf.jpg
97デフォルトの名無しさん (アウアウカー Sa05-ysxi)
2018/04/08(日) 11:13:28.36ID:CEYO7YYHa ありがとうございます
基本的には見た目の話なんですね
基本的には見た目の話なんですね
98デフォルトの名無しさん (ワッチョイ 2d7f-vJpg)
2018/04/08(日) 11:44:19.45ID:rArjzNgz0 C形式のキャストは絶対に使うなって事だよ
99デフォルトの名無しさん (ワッチョイ 959b-Q2Cy)
2018/04/08(日) 11:44:37.07ID:ySnMa92f0100デフォルトの名無しさん (ワッチョイ 2d04-43s8)
2018/04/08(日) 11:44:50.16ID:wX43tNlZ0101デフォルトの名無しさん
2018/04/08(日) 12:07:31.24ID:NQAA1W7E0102デフォルトの名無しさん
2018/04/08(日) 12:17:01.56 danger_cast は言い過ぎとして、unsafe_cast くらいにして欲しかった
103デフォルトの名無しさん
2018/04/08(日) 12:19:03.34 hansode_tampan_cast
104デフォルトの名無しさん
2018/04/08(日) 12:34:24.71 >>96
・str2はポインタの配列、idxはstr2の添字とする
・1文字ずつループして以下を処理
「=」が現れるまでまで読み飛ばす
「 」「"」以外の文字が現れたらstr2[idx++]にその文字へのポインタ格納
・「;」までスキップして¥0に置き換え
・str2はポインタの配列、idxはstr2の添字とする
・1文字ずつループして以下を処理
「=」が現れるまでまで読み飛ばす
「 」「"」以外の文字が現れたらstr2[idx++]にその文字へのポインタ格納
・「;」までスキップして¥0に置き換え
105デフォルトの名無しさん
2018/04/08(日) 12:36:55.36ID:NQAA1W7E0 >>104
なんかできそう!やってみますありがとうございます!
なんかできそう!やってみますありがとうございます!
106デフォルトの名無しさん (スッップ Sdea-+9ji)
2018/04/08(日) 13:00:09.46ID:CRecF1KTd reinterpret_cast をポインタ以外に使うのはない
107デフォルトの名無しさん (ブーイモ MM39-0MDt)
2018/04/08(日) 13:13:04.30ID:IdsKnaEwM c向けのライブラリをc++で開発するときは躊躇なく使うかな>reinterpret_cast
あとはargとかparamとかいう名前の引数に好きなデータを突っ込みたいときとか。
あとはargとかparamとかいう名前の引数に好きなデータを突っ込みたいときとか。
108デフォルトの名無しさん
2018/04/08(日) 13:57:50.07 reinterpret_castはゼロオーバーヘッド?
109デフォルトの名無しさん (ワッチョイ 2d04-43s8)
2018/04/08(日) 13:59:32.17ID:wX43tNlZ0 コンパイラさんが解釈かえるだけだから。新しくなにも確保しない。
110デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/08(日) 14:55:18.41ID:XIh7sWbQ0 バイト単位の処理をするときに必ず出てくるだろ
111デフォルトの名無しさん (ワッチョイ 7923-Q1NZ)
2018/04/08(日) 15:41:01.45ID:drN9+cfC0 >>107の「あとは」以下の用例多いよね。
スレッドのエントリポイントの引数だの libcurl のコールバックの引数だのそんなので
スレッドのエントリポイントの引数だの libcurl のコールバックの引数だのそんなので
112デフォルトの名無しさん (ワッチョイ cabd-X2wr)
2018/04/08(日) 17:17:06.93ID:9PMBUXuM0 バリアント型が無いために野蛮なキャストが生きながらえるんじゃ
さっさとリフレクションとプロパティーとバリアント型を規格に盛り込みなさい
さっさとリフレクションとプロパティーとバリアント型を規格に盛り込みなさい
113デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/08(日) 17:26:02.77ID:XIh7sWbQ0 >バリアント型が無いために野蛮なキャストが生きながらえるんじゃ
誰も殺そうとしていない
誰も殺そうとしていない
114デフォルトの名無しさん (ワッチョイ 3e9f-4k8A)
2018/04/08(日) 17:48:08.38ID:yoJPjKyN0 Windowsとかのメッセージのパラメータなんて、
キャストしないとなにもできないけどな
キャストしないとなにもできないけどな
115デフォルトの名無しさん (ドコグロ MM72-503E)
2018/04/08(日) 20:53:29.38ID:B7amW+qmM116デフォルトの名無しさん (ワッチョイ 4a03-vJpg)
2018/04/08(日) 21:04:08.52ID:aevyI+Fp0 C++++でしょ
ill-formedだけど
それでこそアホどもに相応しい
ill-formedだけど
それでこそアホどもに相応しい
117デフォルトの名無しさん (オイコラミネオ MMa1-RVCH)
2018/04/09(月) 11:03:03.24ID:Ecf+pvidM static_castは長いから、ただのcastにしてほしい
その方がreinterpret_castのunsafe感が高まる
その方がreinterpret_castのunsafe感が高まる
118デフォルトの名無しさん (アウアウカー Sa05-9DAQ)
2018/04/09(月) 11:19:04.00ID:ClY8G0uJa デフォルトをstatic_castで解釈しないのはなぜ?
119はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fe6f-vJpg)
2018/04/09(月) 11:23:19.28ID:fbTUuQs/0 >>117
#define cast static_cast
#define cast static_cast
120デフォルトの名無しさん (ワッチョイ 1a7e-PJKe)
2018/04/09(月) 15:59:42.60ID:AbJVhraD0 >>118
互換性
互換性
121デフォルトの名無しさん (ワッチョイ ca34-glfZ)
2018/04/09(月) 22:38:54.59ID:J7f8Y+mC0 >>118
互換性には2種類ある
クラスポインタ変換の場合を例に挙げると
一つは拡張クラスからベースクラスへのアップキャスト
こちらはキャストの明示は必要ない暗黙の型変換が行える
もう一つはベースクラスから拡張クラスへのダウンキャスト
こちらはベースから拡張クラスへの変換に確証が得られている
わけではないのでstatic_castを用いて変換してやらないといけない
このときdynamic_castを使うと実行時に型をチェックしてくれる
のでよりstrictな変換を行わせることができる
できるといってもエラーを発生させるかさせないかの違いだけだけど
互換性には2種類ある
クラスポインタ変換の場合を例に挙げると
一つは拡張クラスからベースクラスへのアップキャスト
こちらはキャストの明示は必要ない暗黙の型変換が行える
もう一つはベースクラスから拡張クラスへのダウンキャスト
こちらはベースから拡張クラスへの変換に確証が得られている
わけではないのでstatic_castを用いて変換してやらないといけない
このときdynamic_castを使うと実行時に型をチェックしてくれる
のでよりstrictな変換を行わせることができる
できるといってもエラーを発生させるかさせないかの違いだけだけど
122デフォルトの名無しさん (ワッチョイ 898a-b3Lf)
2018/04/10(火) 00:58:36.89ID:KTsfJjko0 >>118
そら互換性のためでしょ
そら互換性のためでしょ
123デフォルトの名無しさん (ワッチョイ a102-vJpg)
2018/04/10(火) 05:22:39.46ID:AY1cx8Cu0124デフォルトの名無しさん
2018/04/10(火) 09:48:42.17ID:PdcJoG7U0 コンソールプログラムのwhile()ループで1文字入力したらループを抜けるときに使うやつって何でしたっけ・・
while(!getchar())だと文字を受けるまで処理がとまってしまいますが、止まらないやつがあったと思うのですが
while(!getchar())だと文字を受けるまで処理がとまってしまいますが、止まらないやつがあったと思うのですが
125デフォルトの名無しさん (ワッチョイ a102-vJpg)
2018/04/10(火) 10:20:00.71ID:AY1cx8Cu0 標準に「止まらないキースキャン」はない
conio.hのgetch()や
ioctl.hのioctl()あるいは
windows.hのGetKeyState()のような
処理系依存の関数が必要
conio.hのgetch()や
ioctl.hのioctl()あるいは
windows.hのGetKeyState()のような
処理系依存の関数が必要
126デフォルトの名無しさん (ワッチョイ ca34-glfZ)
2018/04/10(火) 10:30:44.25ID:h0HOed+p0 linuxならファイルディスクリプタにselectが使えるけど
windowsの場合はファイルディスクリプタとソケットがまた別物だし
windowsの場合はファイルディスクリプタとソケットがまた別物だし
127デフォルトの名無しさん
2018/04/10(火) 11:04:35.34ID:PdcJoG7U0128はちみつ餃子 ◆8X2XSCHEME (ワッチョイ fe6f-vJpg)
2018/04/10(火) 11:10:44.06ID:141aKXKv0 それって結局はビジーループの一種じゃね?
やりたいことにもよるけど、基本的にはあんまりよくない方法だと思う。
やりたいことにもよるけど、基本的にはあんまりよくない方法だと思う。
129デフォルトの名無しさん
2018/04/11(水) 08:10:31.14ID:T4s6uHOl0130デフォルトの名無しさん (ワッチョイ ca34-glfZ)
2018/04/11(水) 09:27:42.36ID:WgIjYyd40 ビジーループにSleep挿入して100msづつ位休む感じでアイドルに見せ掛けるハッタリを噛ます
131デフォルトの名無しさん (ワッチョイ a102-vJpg)
2018/04/11(水) 12:28:20.43ID:nyTWTQlG0 はったりじゃないでしょ
それは合格
それは合格
132デフォルトの名無しさん (ワッチョイ ffbd-zmT2)
2018/04/14(土) 12:01:39.22ID:bHi1VZVu0 低優先度タスクからのプリエンプションが無いOSでSleep(100 ms)したら
優先度関係無く他タスクに100 msを超えて待たされてしまうかもしれない
Sleep()は実行権放棄の呪文としては強力すぐる…
優先度関係無く他タスクに100 msを超えて待たされてしまうかもしれない
Sleep()は実行権放棄の呪文としては強力すぐる…
133デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/14(土) 13:25:03.37ID:RVvtBgPf0 DOS並にコンソールがクソな環境も珍しいよな
unixベースのシェルに比べるとこんな貧相なものがよく生き残ってこれたとおもふ
unixベースのシェルに比べるとこんな貧相なものがよく生き残ってこれたとおもふ
134デフォルトの名無しさん (ワッチョイ a304-x9ai)
2018/04/14(土) 14:27:12.94ID:AqyGMwU/0 >>132
ウィンドウズの話だけど、threadヘッダのスリープは起こし忘れが少ない気がする。
ウィンドウズの話だけど、threadヘッダのスリープは起こし忘れが少ない気がする。
135デフォルトの名無しさん (ワッチョイ 7f4c-IyeK)
2018/04/14(土) 22:00:06.17ID:7AzbU2hj0 未だにGUIがまともにならないLinuxも珍しいよな
136デフォルトの名無しさん (ワッチョイ cf81-ycE0)
2018/04/14(土) 22:16:23.39ID:B3QB9Fpb0 >>135
君に期待しても良いのかな?
君に期待しても良いのかな?
137デフォルトの名無しさん (ワッチョイ bf7e-ULsc)
2018/04/14(土) 22:26:38.67ID:jn5/AQ8F0 誰かがデザイナ雇わないとな
138デフォルトの名無しさん (ワッチョイ 1302-ycE0)
2018/04/14(土) 22:31:21.78ID:Tt8LTURP0 まともを定義せよ
139デフォルトの名無しさん (ワッチョイ bf7e-ULsc)
2018/04/14(土) 22:47:45.04ID:jn5/AQ8F0 美しいGUIか使用上十分なGUIか
140デフォルトの名無しさん (ワッチョイ ff68-LJHW)
2018/04/14(土) 23:04:06.39ID:WAEnZz2X0 Class A
{
void A(B* &b)
{
}
};
{
void A(B* &b)
{
}
};
141デフォルトの名無しさん (ワッチョイ cf81-ycE0)
2018/04/14(土) 23:06:11.46ID:B3QB9Fpb0 毎日使う上では美しさはいらない。シンプルで頼む
142デフォルトの名無しさん (ワッチョイ ff68-LJHW)
2018/04/14(土) 23:08:51.81ID:WAEnZz2X0 済みません、途中送信してしまいました・・・
Class A
{
B* _b;
void A(B* &b)
{
_b = b;
_b = new B();
}
};
B* b;
A* a = new A(b);
b←newされてない・・・
クラスAのコンストラクタでクラスBのインスタンスを受け取り
newで新たなインスタンスを作成したうえで返そうと思います。
しかし上記のようなプログラムを作成してもインスタンスbは
newされてませんでした。
どうしたらbをnewしたうえで返すことができるようになるでしょうか?
Class A
{
B* _b;
void A(B* &b)
{
_b = b;
_b = new B();
}
};
B* b;
A* a = new A(b);
b←newされてない・・・
クラスAのコンストラクタでクラスBのインスタンスを受け取り
newで新たなインスタンスを作成したうえで返そうと思います。
しかし上記のようなプログラムを作成してもインスタンスbは
newされてませんでした。
どうしたらbをnewしたうえで返すことができるようになるでしょうか?
143デフォルトの名無しさん (ワッチョイ 839b-qSfG)
2018/04/14(土) 23:15:39.02ID:EkNosKh20 void A(B** b)
{
*b = new B();
}
でいいんでないの
{
*b = new B();
}
でいいんでないの
144デフォルトの名無しさん (アウアウカー Sa47-to91)
2018/04/14(土) 23:23:21.44ID:9kNArSDya 馬鹿だから分からないんだが教えて
インスタンス渡してからnewするのはなぜ?
ポインタを参照にする意味とは?
インスタンス渡してからnewするのはなぜ?
ポインタを参照にする意味とは?
145デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/15(日) 00:33:02.73ID:/OvgYAab0 >>142
> void A(B* &b)
> {
> _b = b;
> _b = new B();
> }
下の方は b = new B(); としたかったんじゃないのか
> void A(B* &b)
> {
> _b = b;
> _b = new B();
> }
下の方は b = new B(); としたかったんじゃないのか
146デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 00:44:36.47ID:b/ktaKN+0 A(B*&b) {
b=new B();
_b=b;
}
頭悪いだろオマエラw
b=new B();
_b=b;
}
頭悪いだろオマエラw
147デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 00:52:36.30ID:b/ktaKN+0 A(B*&b){_b=b=new B();}
もしくは一発で書けば何の問題もおこらんよ
もしくは一発で書けば何の問題もおこらんよ
148デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/15(日) 00:57:54.63ID:/OvgYAab0 受け取ったインスタンスを全く使ってないがそれが意図した動作なのか
149デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 01:00:18.78ID:b/ktaKN+0 参照オブジェクトの概念がよくわかってない
学び直せと言いたい
学び直せと言いたい
150デフォルトの名無しさん (ワッチョイ 7fcb-1i0h)
2018/04/15(日) 01:04:57.02ID:VAOccv/70 >>148
インスタンスなんて受け取ってないぞ
インスタンスなんて受け取ってないぞ
151デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/15(日) 01:09:03.26ID:/OvgYAab0152デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 01:19:33.61ID:b/ktaKN+0 それにしてもbをnewするとかイミフ
何もしてないじゃんw
何もしてないじゃんw
153デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 01:22:46.36ID:b/ktaKN+0 古いインスタンスを_bに格納して新しいインスタンスをbに返したいのか
新しいインスタンスを作成してbと_b両方に返したいのか
どっちなんだよ
新しいインスタンスを作成してbと_b両方に返したいのか
どっちなんだよ
154デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/15(日) 01:22:49.52ID:/OvgYAab0155デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 01:30:17.78ID:b/ktaKN+0 _b=new B() は見当たるが
b=new B() ←こんな記述は見当たらないぞ
嘘もたいがいにしとけや
b=new B() ←こんな記述は見当たらないぞ
嘘もたいがいにしとけや
156デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/15(日) 01:39:29.12ID:b/ktaKN+0 >>142
コイツのソース見る限りbに対しては何もしてないでしょ
コイツのソース見る限りbに対しては何もしてないでしょ
157デフォルトの名無しさん (スプッッ Sd1f-QADq)
2018/04/15(日) 03:35:09.27ID:mYZtkoVNd158デフォルトの名無しさん
2018/04/15(日) 06:03:36.65 >>142
> void A(B* &b)
> {
> _b = b;
> _b = new B();
> }
void A(B* &b)
{
B* new_b = new B();
b = new_b;
_b = new_b;
}
こういうのは愚直に書けばええんや
> void A(B* &b)
> {
> _b = b;
> _b = new B();
> }
void A(B* &b)
{
B* new_b = new B();
b = new_b;
_b = new_b;
}
こういうのは愚直に書けばええんや
159デフォルトの名無しさん (ワッチョイ a393-R+MU)
2018/04/15(日) 08:25:34.99ID:IUBKEb9a0 AのコンストラクタにBへのポインタのポインタだか参照だかを渡さなくても
Bへのポインタと関係ないAのコンストラクタ、と
A内部のBメンバへのポインタを返すゲッタ、との
組み合わせにする方が素直でねぇか?
class A
{
B* _b;
public:
A() {_b = new B();}
B* ptr_b() const {return _b;}
};
int main(void)
{
A* a = new A();
B* b = a->ptr_b();
return 0;
}
別に確保した「Bを格納すべき領域へのポインタ」を受け取って、
Aの初期化時にBの配置newを行わせたい、という意図かもしれないけど、
元の質問から想像を広げすぎてるよね。
Bへのポインタと関係ないAのコンストラクタ、と
A内部のBメンバへのポインタを返すゲッタ、との
組み合わせにする方が素直でねぇか?
class A
{
B* _b;
public:
A() {_b = new B();}
B* ptr_b() const {return _b;}
};
int main(void)
{
A* a = new A();
B* b = a->ptr_b();
return 0;
}
別に確保した「Bを格納すべき領域へのポインタ」を受け取って、
Aの初期化時にBの配置newを行わせたい、という意図かもしれないけど、
元の質問から想像を広げすぎてるよね。
160デフォルトの名無しさん (ワッチョイ 6fe7-8Ez4)
2018/04/15(日) 10:01:16.50ID:6WpjLuna0 Aが_bをdeleteするために管理するだけのクラスだとしたらスマポ使えという話になる
161デフォルトの名無しさん (ワッチョイ 638b-1zQp)
2018/04/15(日) 10:57:43.04ID:Yi/sDJN50162142 (ワッチョイ ff68-LJHW)
2018/04/15(日) 11:01:19.87ID:GeT3puOg0 舌足らずでもうしわけありませんでした・・・
クラスBのインスタンスをクラスAで処理していくためにコンストラクタでクラスBの
インスタンスを参照受け取りする仕様にしました。
大半のケースではそのまま処理して終わり、なのですが
まれに受け取ったクラスBのインスタンスをnewし直す必要がありまして
その際受け取ったクラスAのメンバ変数 _b をnewしても受け取り元のインスタンスを
newできないことに悩んでいました
ただオブジェクト指向の観点から見るとあまり美しいプログラミングスタイルでは無いのかもしれませんね。
クラスBのインスタンスはクラスA内部で完全隔離処理するようにした方がいいのかもしれません
クラスBのインスタンスをクラスAで処理していくためにコンストラクタでクラスBの
インスタンスを参照受け取りする仕様にしました。
大半のケースではそのまま処理して終わり、なのですが
まれに受け取ったクラスBのインスタンスをnewし直す必要がありまして
その際受け取ったクラスAのメンバ変数 _b をnewしても受け取り元のインスタンスを
newできないことに悩んでいました
ただオブジェクト指向の観点から見るとあまり美しいプログラミングスタイルでは無いのかもしれませんね。
クラスBのインスタンスはクラスA内部で完全隔離処理するようにした方がいいのかもしれません
163デフォルトの名無しさん (ワッチョイ 6fe7-8Ez4)
2018/04/15(日) 11:19:51.96ID:6WpjLuna0 BをAしか使わないならAの中に隔離する
他でも使う必要があって、Aの外部でBの寿命を管理してるなら、AにrefreshB()みたいなBをnewし直した時に渡し直す関数を用意する
でいいんじゃないの
本当にBをnewし直す(メモリ上再配置する)必要があるならだけど
実はB自体にreset()用意するだけで済む話のように見える
他でも使う必要があって、Aの外部でBの寿命を管理してるなら、AにrefreshB()みたいなBをnewし直した時に渡し直す関数を用意する
でいいんじゃないの
本当にBをnewし直す(メモリ上再配置する)必要があるならだけど
実はB自体にreset()用意するだけで済む話のように見える
164デフォルトの名無しさん (アウアウウー Sae7-ycE0)
2018/04/15(日) 12:55:30.01ID:eVQUY7wra c++じゃポインタのこともインスタンスっていうのか
165デフォルトの名無しさん (ブーイモ MMa7-ffqK)
2018/04/15(日) 14:39:37.81ID:rsq+XQj0M >>164
2レス前も読めないのか
2レス前も読めないのか
166デフォルトの名無しさん (アウアウウー Sae7-LJHW)
2018/04/15(日) 18:30:19.93ID:51qZxk5sa 理解不足を言い換えてミスしてない風にするのが流行ってるのかな
167デフォルトの名無しさん (ワッチョイ 832d-to91)
2018/04/15(日) 22:24:39.46ID:vR7s+ZvT0 ミスって理解不足からくるじゃん
168デフォルトの名無しさん (アウアウオー Sadf-vcwQ)
2018/04/15(日) 23:39:26.36ID:Mp1WrgTGa 質問あるのですが、
同一PC内の画面機能と処理機能のプロセス間通信はどうやるのが便利ですか?
画面更新速度は100ms周期くらいです。
共有メモリがいいと思ったんですが、ソケット推してる人がいてもやもや
アクセス速度とかNICの通信量とか考えると共有メモリ一択な気がするんですが、どうなんでしょうか?
パイプとマップドメモリはメリット無いので考えていません。
同一PC内の画面機能と処理機能のプロセス間通信はどうやるのが便利ですか?
画面更新速度は100ms周期くらいです。
共有メモリがいいと思ったんですが、ソケット推してる人がいてもやもや
アクセス速度とかNICの通信量とか考えると共有メモリ一択な気がするんですが、どうなんでしょうか?
パイプとマップドメモリはメリット無いので考えていません。
169デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/15(日) 23:42:01.12ID:sXJBpbWg0 何を重視するか次第
170デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/15(日) 23:43:30.47ID:qZPDSYA20 共有メモリ=マップドファイルのファイル無しやで
171デフォルトの名無しさん (アウアウウー Sae7-LJHW)
2018/04/15(日) 23:43:31.62ID:51qZxk5sa そもそも別にする理由は何?
どんなものを想定してるの?
プロセスは常に1対1なの
どんなものを想定してるの?
プロセスは常に1対1なの
172デフォルトの名無しさん (ワッチョイ a350-96DA)
2018/04/15(日) 23:44:26.87ID:sXJBpbWg0 OSは?
173デフォルトの名無しさん (アウアウウー Sae7-LJHW)
2018/04/15(日) 23:47:06.30ID:51qZxk5sa 同一PC内なのにソケットとNICの通信量って何か関係あるの?
174はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-ycE0)
2018/04/15(日) 23:53:07.49ID:aQ0USPFo0175デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 00:28:23.74ID:TXxoP4/a0 unix domain ソケットがお手軽で便利だけど
時代に合わせてパイプか tcp かなあ
Windows でしか使わないならならcom使うのも簡便
時代に合わせてパイプか tcp かなあ
Windows でしか使わないならならcom使うのも簡便
176デフォルトの名無しさん
2018/04/16(月) 01:39:01.50 共有メモリだとリングバッファとか排他とか自分で作り込まなきゃいけんやろ
ソケットならそのへん考えなくてええやん
ソケットならそのへん考えなくてええやん
177デフォルトの名無しさん (ワッチョイ ff34-ecZa)
2018/04/16(月) 02:21:40.05ID:kGNRvKds0 windowsはファイルマッピングオブジェクトでしょ
パイプでさえSYNCHRONIZE特権指定できないゴミなんだから
パイプでさえSYNCHRONIZE特権指定できないゴミなんだから
178デフォルトの名無しさん (ワッチョイ bf7e-ULsc)
2018/04/16(月) 03:12:35.45ID:HsbFINqV0 標準入出力最強説
179デフォルトの名無しさん (ドコグロ MMdf-fgqO)
2018/04/16(月) 06:43:39.39ID:kK8liqj6M unix domain socket なんて使ったことないな
名前空間としてファイルの指定がいるし将来違うマシン間で動作させる時に変更量が多いしtcp/udpに比べてデメリット多くね?
名前空間としてファイルの指定がいるし将来違うマシン間で動作させる時に変更量が多いしtcp/udpに比べてデメリット多くね?
180デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 07:06:03.32ID:irvwqMpDa >>173,174
共有メモリは例えば/dev/shmのRAM領域にあるメモリマップですよね
同一PC内のソケットのボーレートってほぼクロック数なんですか?
同一PC内の通信であったとしてもネットワークドライバの実装するプロトコルスタックを経由してしまうので、
その分のオーバーヘッドの分だけ速度が落ちる、という解釈ですが
共有メモリは例えば/dev/shmのRAM領域にあるメモリマップですよね
同一PC内のソケットのボーレートってほぼクロック数なんですか?
同一PC内の通信であったとしてもネットワークドライバの実装するプロトコルスタックを経由してしまうので、
その分のオーバーヘッドの分だけ速度が落ちる、という解釈ですが
181デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 07:17:01.48ID:irvwqMpDa iperfとかで同一PC内で速度測ったらどれくらいいきます?
(1Gbpsな気が)
(1Gbpsな気が)
182デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 08:09:11.43ID:TXxoP4/a0183デフォルトの名無しさん (ワッチョイ 3323-QADq)
2018/04/16(月) 08:09:52.14ID:TXxoP4/a0 >>180
あなた知識が色々おかしいので何も考えずに教えられたとおりにした方が良いですよ
あなた知識が色々おかしいので何も考えずに教えられたとおりにした方が良いですよ
184デフォルトの名無しさん (ワッチョイ ff23-ImQH)
2018/04/16(月) 12:07:30.90ID:1SlhlQTu0 昨日の安全確保支援士の試験にC++が出ていたが、メンバ変数にm_が付いていた。
さすがにポインタのpなどは付いていないが、ちょっと意外だった。
さすがにポインタのpなどは付いていないが、ちょっと意外だった。
185デフォルトの名無しさん (アウアウカー Sa47-vcwQ)
2018/04/16(月) 18:56:27.96ID:aeexu7jXa >>183
同一PCのTCP通信はどういう経路通るの?
同一PCのTCP通信はどういう経路通るの?
186デフォルトの名無しさん (ブーイモ MMff-LJHW)
2018/04/16(月) 20:00:43.80ID:Iff3OzVTM クライアント→OS→サーバかその逆
187デフォルトの名無しさん (ワッチョイ f349-ycE0)
2018/04/17(火) 17:50:44.77ID:YRsoLN600 未だにシステムハンガリアンなやつみたいに変なのとも
うまく付き合うのがC++使いのスキルの1つだかんね
うまく付き合うのがC++使いのスキルの1つだかんね
188デフォルトの名無しさん (ワッチョイ ffbd-zmT2)
2018/04/18(水) 00:38:34.88ID:1Mo3YyI90 ↑ボゾビット
189デフォルトの名無しさん (ワッチョイ 738a-Z7Iu)
2018/04/18(水) 02:18:47.96ID:whM0Cl8U0 Windowsのネットワーク関係APIはkernel内に実装されていない
後は判るな?
後は判るな?
190デフォルトの名無しさん (ワッチョイ 135b-ycE0)
2018/04/18(水) 07:02:39.34ID:bX/oR0u10 ネットワーク関係に限らずAPIはすべてサブシステムだね
191デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/20(金) 23:48:17.59ID:MBksKo4b0 class Sample{
private:
const double val{0.0}
public:
void set(double v){
static_cast<double>(this->val) = v;
}
};
VS2015での話なのですが、こんな感じのコードを先日見かけまして
static_castでメンバ変数のconst外しができているように見えるのですけど、この動作は合法なものなのでしょうか?
試しにwandboxのclang 7.0で試して見た所当然のようにコンパイルエラーになったのですが・・・
private:
const double val{0.0}
public:
void set(double v){
static_cast<double>(this->val) = v;
}
};
VS2015での話なのですが、こんな感じのコードを先日見かけまして
static_castでメンバ変数のconst外しができているように見えるのですけど、この動作は合法なものなのでしょうか?
試しにwandboxのclang 7.0で試して見た所当然のようにコンパイルエラーになったのですが・・・
192はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/21(土) 00:23:55.79ID:7j/Wt31X0193デフォルトの名無しさん (ワッチョイ e3b3-ey0r)
2018/04/21(土) 00:37:31.88ID:WobodGQW0 const char *a = "hoge";
const char *b = "hoge";
この2つのポインタがa == bになることは保障されていますか?
const char *b = "hoge";
この2つのポインタがa == bになることは保障されていますか?
194デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/21(土) 00:42:18.95ID:F9SE4HSu0 ない
195デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/21(土) 00:47:40.36ID:5uFute1E0 >>192
やっぱりそうですよね、何か特別な動作かとも思ったのですがVC++のバグか仕様なんですね・・・
やっぱりそうですよね、何か特別な動作かとも思ったのですがVC++のバグか仕様なんですね・・・
196デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 06:06:21.46ID:pETeS31u0 >>191
VS2017では警告されるぞ(おそらくVS2015でも)
cl 191.cpp /c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.13.26129 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
191.cpp
191.cpp(7): warning C4213: 非標準の拡張機能が使用されています: 左辺値でキャストしました。
後はわかるな?
VS2017では警告されるぞ(おそらくVS2015でも)
cl 191.cpp /c /W4
Microsoft(R) C/C++ Optimizing Compiler Version 19.13.26129 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
191.cpp
191.cpp(7): warning C4213: 非標準の拡張機能が使用されています: 左辺値でキャストしました。
後はわかるな?
197デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/21(土) 06:22:18.02ID:wsxrLs1Z0 ポインタや参照のconst外しは合法だが
なぜ合法なのか(合法にせざるを得なかったのか)というとmemory aliasing状況下での最適化の限界に関する
ラクダ本ばりに長い議論を要する
悪寒、
プログラミング言語C++か何かでは古いライブラリのconst付け忘れにコード修正無しで対応できるYO!みたいな簡単な説明しかないが
しかし左辺値のキャストというのはどうなの?
なぜ合法なのか(合法にせざるを得なかったのか)というとmemory aliasing状況下での最適化の限界に関する
ラクダ本ばりに長い議論を要する
悪寒、
プログラミング言語C++か何かでは古いライブラリのconst付け忘れにコード修正無しで対応できるYO!みたいな簡単な説明しかないが
しかし左辺値のキャストというのはどうなの?
198デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/21(土) 08:02:29.99ID:POwjcYl50 static_cast<double>(this->val)自体は合法でしょ
this->valと同じ値のdouble一時オブジェクトができるだけ
おかしいのはそれに代入してること
this->valと同じ値のdouble一時オブジェクトができるだけ
おかしいのはそれに代入してること
199デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 11:34:19.85ID:pETeS31u0 int x;
(float&)x = 1;
(float&)x = 1;
200デフォルトの名無しさん (ワッチョイ b727-9jjH)
2018/04/21(土) 11:34:55.76ID:pETeS31u0 途中で書き込まれてしまった
int x;
(float&)x = 1; //well-formed
(float )x = 1; //ill-formed
int x;
(float&)x = 1; //well-formed
(float )x = 1; //ill-formed
201デフォルトの名無しさん (アウアウカー Sa43-gLlN)
2018/04/22(日) 17:24:24.80ID:RLzEBpTGa std:stringを引数や戻り値で使う場合、値渡しでも大丈夫ですか?
202デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 17:29:11.38ID:xCJicIF50 大丈夫
203デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 18:29:08.58ID:i5tL4+9s0 stringは内部に参照カウンタを保持した共有リファレンサを持っているから&&使用せずに直で渡しても特に副作用もなく何の問題もないよ
204デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/22(日) 18:53:47.99ID:cFbiqY2T0 今どきのstringはヒープじゃなくスタックを使ったりもするね
鬼のように最適化されている
鬼のように最適化されている
205デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 19:26:19.72ID:xCJicIF50 >>203
おじいちゃんそれ大昔の話ですよ
おじいちゃんそれ大昔の話ですよ
206デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 19:52:27.54ID:i5tL4+9s0207デフォルトの名無しさん (アウアウカー Sa43-gLlN)
2018/04/22(日) 20:00:35.45ID:pGMCB93ha ありがとうございます
勝手にデストラクタでdeleteされるとか色々考えていましたがそこは先人たちが考慮して作られているのですね
勝手にデストラクタでdeleteされるとか色々考えていましたがそこは先人たちが考慮して作られているのですね
208デフォルトの名無しさん (ブーイモ MMba-BC+p)
2018/04/22(日) 20:19:16.41ID:5qvptAAaM いやいや老害に騙されちゃだめですよ。
参照カウントなstringは大昔に禁止されているので、ちゃんと参照や右辺値渡等を使いましょう
参照カウントなstringは大昔に禁止されているので、ちゃんと参照や右辺値渡等を使いましょう
209デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 20:23:51.32ID:M8qmSLCN0210デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/22(日) 20:58:25.32ID:ltJDDxzZ0 COWなstringは効率が悪くてマルチスレッドとの相性が最悪なのでとっくの昔に打ち捨てられました
規格のCOW実装許容するための記述はC++11でバッサリ捨てられました
今はCOWは規格違反です
規格のCOW実装許容するための記述はC++11でバッサリ捨てられました
今はCOWは規格違反です
211デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/22(日) 21:39:50.50ID:M8qmSLCN0 なん…だと!?
212デフォルトの名無しさん
2018/04/22(日) 21:51:37.63 おじいちゃんw
213デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/22(日) 21:54:34.58ID:w7SgV4Bf0 値渡しや戻り値で戻せることと、
std::string内部での(ヒープ)メモリ管理の詳細は関係なくね??
引数や戻り値としてスタックに構造体を積めるようになった時点で値渡しや戻り値で戻せることとはほぼ自明
(よほど変なコピコンを定義してコピーをわざと不首尾に終わらせない限りそれはできる
std::string内部での(ヒープ)メモリ管理の詳細は関係なくね??
引数や戻り値としてスタックに構造体を積めるようになった時点で値渡しや戻り値で戻せることとはほぼ自明
(よほど変なコピコンを定義してコピーをわざと不首尾に終わらせない限りそれはできる
214デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/22(日) 23:24:42.33ID:xCJicIF50 >>213
まあそうだけれど無駄なコピーはなるべく避けましょうということで
まあそうだけれど無駄なコピーはなるべく避けましょうということで
215デフォルトの名無しさん (ワッチョイ 9ab3-bxMY)
2018/04/22(日) 23:50:24.01ID:usC+gOtq0 今時のコンパイラは、そこらの人間よりよっぽど高度な最適化をするから、素直で単純なコードを書くと速くなる。
効率化するつもりで余計なことをすると、コンパイラの最適化を妨げて、かえって効率が落ちたりする。
本当に重要な部分は実測しながら試行錯誤、それ以外はできるだけ素直なコードを書く、ってあたりが基本。
効率化するつもりで余計なことをすると、コンパイラの最適化を妨げて、かえって効率が落ちたりする。
本当に重要な部分は実測しながら試行錯誤、それ以外はできるだけ素直なコードを書く、ってあたりが基本。
216デフォルトの名無しさん (ワッチョイ 7acb-462F)
2018/04/23(月) 01:28:01.46ID:C1tu+nEe0 stringを値渡しせずにconst参照等々で渡すことはc++の基本なので、素直で単純なコードの部類に入ると思うが。
217デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 01:32:17.81ID:Lxhtz3Yj0 って、あたりが基本(`・ω・´)キリッ
道化かw
道化かw
218デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 01:37:49.36ID:voecBiJS0 先生!OpenMPへの展開も自動でやってくれるんですか?
219デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 01:46:26.60ID:Lxhtz3Yj0 値渡しを素直なコードとか言う人って他人の書いたコード読まないんだろうな
宿題以外で何か書いたことあるのか
宿題以外で何か書いたことあるのか
220デフォルトの名無しさん (ワッチョイ db2d-tR7F)
2018/04/23(月) 02:04:07.25ID:SgzxVTg+0 const type &
221デフォルトの名無しさん (ワッチョイ 9ab3-bxMY)
2018/04/23(月) 04:33:47.47ID:WjBjSqCj0 const参照渡しが基本だったのって C++11 以前の世界の話だよね…
幸い、近頃はそんなコードをあまり読まずに済んでるけど。
余計なことをしない、ってのが大事なんだよ。
参照でなきゃいけない理由がなければ、参照を使うべきじゃないんだ。
幸い、近頃はそんなコードをあまり読まずに済んでるけど。
余計なことをしない、ってのが大事なんだよ。
参照でなきゃいけない理由がなければ、参照を使うべきじゃないんだ。
222デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/23(月) 06:33:47.30ID:awXEdMZR0 どこの世界に生きてる人?
223デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 07:20:47.54ID:voecBiJS0 どんな作品を作っているのかなぁ?
224デフォルトの名無しさん (ワッチョイ 4ecc-KT7J)
2018/04/23(月) 08:32:33.12ID:EDVnvY5w0 初心者です。
今書いてるプログラムをコンパイルして実行すると、エラーが出たり出なかったり謎の挙動を起こします
最初はエラーが出て、その後数回、コードを一切変えずコンパイルしなおして実行すると急にエラーが出ず上手く行ったりします。
これって何が原因なのでしょうか…
こういう事ってよくあるのですか?
今書いてるプログラムをコンパイルして実行すると、エラーが出たり出なかったり謎の挙動を起こします
最初はエラーが出て、その後数回、コードを一切変えずコンパイルしなおして実行すると急にエラーが出ず上手く行ったりします。
これって何が原因なのでしょうか…
こういう事ってよくあるのですか?
225デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 08:34:14.27ID:Lxhtz3Yj0 キチガイ発言はツイッターかブログでどうぞ
226デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 08:35:11.51ID:Lxhtz3Yj0227デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 10:17:10.24ID:Hh6TN2Aq0 >>224
そのエラーとやら、もしかして警告か?
エラーは直すまで何度コンパイルしても絶対に通らない
警告はコンパイルが完了しオブジェクトファイルができる
そのコンパイルとやら、もしかしてビルドか? それともmakeか?
ビルドやmakeはオブジェクトファイルとソースファイルの日付を比較して
ソースファイルのほうが古いとコンパイルを省く
だから警告が出てからもう一度ビルドしても同じ警告は出ない
おそらく、こういうことだと見受ける
そのエラーとやら、もしかして警告か?
エラーは直すまで何度コンパイルしても絶対に通らない
警告はコンパイルが完了しオブジェクトファイルができる
そのコンパイルとやら、もしかしてビルドか? それともmakeか?
ビルドやmakeはオブジェクトファイルとソースファイルの日付を比較して
ソースファイルのほうが古いとコンパイルを省く
だから警告が出てからもう一度ビルドしても同じ警告は出ない
おそらく、こういうことだと見受ける
228デフォルトの名無しさん (ワッチョイ 237f-9jjH)
2018/04/23(月) 10:24:23.61ID:48PNhEnX0 変数を初期化してないんだろ
229デフォルトの名無しさん (ドコグロ MM83-cuLp)
2018/04/23(月) 12:27:19.92ID:8odlZZv8M230デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 13:44:26.09ID:Hh6TN2Aq0 >>229
日本語でしゃべってくれ
日本語でしゃべってくれ
231デフォルトの名無しさん (ワッチョイ 5b9b-Th9u)
2018/04/23(月) 13:58:46.97ID:1JtTwXqR0 実行してるということはコンパイルは通ってるということだと思う
つまりコンパイルの問題ではなく、コンパイルエラーではないだろうという推測
つまりコンパイルの問題ではなく、コンパイルエラーではないだろうという推測
232デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/23(月) 13:58:59.41ID:Lxhtz3Yj0233デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 14:45:37.00ID:Hh6TN2Aq0 初心者つってるから
どこまでがコンパイルで
どこからが実行なのかの
区別からあやしいと見ている
実行時エラーにしても
stopダイアログなのか
結果がおかしいのか
あの質問では言ってない
どこまでがコンパイルで
どこからが実行なのかの
区別からあやしいと見ている
実行時エラーにしても
stopダイアログなのか
結果がおかしいのか
あの質問では言ってない
234デフォルトの名無しさん (ワッチョイ 237f-9jjH)
2018/04/23(月) 14:53:14.79ID:48PNhEnX0 すげーみっともない奴だな
235デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 14:56:19.11ID:Hh6TN2Aq0 嘘は言っていない
236デフォルトの名無しさん (スプッッ Sd5a-wmjz)
2018/04/23(月) 15:52:04.86ID:mDBTWEJod 言論の自由を行使し過ぎw
237デフォルトの名無しさん (スプッッ Sd5a-Incm)
2018/04/23(月) 16:27:46.06ID:So2OBlKcd コンパイルして(リンクを)実行すると
だったりして
だったりして
238デフォルトの名無しさん (ワッチョイ db2d-tR7F)
2018/04/23(月) 17:14:12.91ID:VArh9qU+0 初心者がいちいちobjからリンクしてるのか
239デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/23(月) 17:15:44.11ID:Hh6TN2Aq0 しつけえな
ここはプログラム技術板
技術的な内容が皆無のレスでひっ絡んでくるなカス
ここはプログラム技術板
技術的な内容が皆無のレスでひっ絡んでくるなカス
240デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 17:30:01.10ID:orIXCmni0241デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 17:32:39.31ID:orIXCmni0 あ、初心者だったのか…
242デフォルトの名無しさん (ワッチョイ ba60-Mp6C)
2018/04/23(月) 17:34:51.03ID:vGDXyrLu0243デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/23(月) 21:12:48.39ID:7US5BnQm0 pthread を使ってループ処理をマルチスレッド化したのですが、シングルスレッドと同じスピードしか出ませんでした。
pthread でこういう事やっても無駄なんでしょうか?
pthread でこういう事やっても無駄なんでしょうか?
244デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/23(月) 22:04:36.67ID:C1tu+nEe0 流石に情報が少なすぎて
このままだと下手糞としか言いようがない。
ソースコード貼り付けれ
このままだと下手糞としか言いようがない。
ソースコード貼り付けれ
245デフォルトの名無しさん (ワッチョイ fa4c-+Cft)
2018/04/23(月) 22:09:13.69ID:oFP/MhUD0 シングルコアのPCかも
246デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/23(月) 22:17:20.63ID:1ikED9ud0 pthread使うとひとつの処理が倍速にでもなると思ったのだろうか
247片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/23(月) 22:21:51.35ID:ATy8dQXfd 不完全な質問はスルーすっと
248デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/23(月) 22:42:58.69ID:7US5BnQm0 舌足らずですみません。コードはこんな感じです。
threadFunctionは単なる加算値、joinFunctionは集計処理です。
コアは物理2論理4です。
template< class ArgType >
void Reduce( std::vector< ArgType >& threadArgs, void* (*threadFunction)(void*), void (*joinFunction)(std::vector< ArgType >&) )
{
const size_t threadCount = threadArgs.size();
threads.resize( threadCount );
std::vector< void* > voidPtrArgs = CastArgsToVoidPtrs( threadArgs );
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
sched_param schedParam;
schedParam.sched_priority = sched_get_priority_max( SCHED_FIFO );
pthread_attr_t threadAttribute;
pthread_attr_init( & threadAttribute );
pthread_attr_setschedpolicy( & threadAttribute, schedPolicy );
pthread_attr_setinheritsched( & threadAttribute, PTHREAD_EXPLICIT_SCHED );
pthread_t& thread = threads[ threadIndex ];
pthread_setschedparam( thread, schedPolicy, & schedParam );
pthread_create( & thread, & threadAttribute, threadFunction, voidPtrArgs[ threadIndex ] );
}
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
pthread_t thread = threads[ threadIndex ];
pthread_join( thread, NULL );
}
joinFunction( threadArgs );
}
threadFunctionは単なる加算値、joinFunctionは集計処理です。
コアは物理2論理4です。
template< class ArgType >
void Reduce( std::vector< ArgType >& threadArgs, void* (*threadFunction)(void*), void (*joinFunction)(std::vector< ArgType >&) )
{
const size_t threadCount = threadArgs.size();
threads.resize( threadCount );
std::vector< void* > voidPtrArgs = CastArgsToVoidPtrs( threadArgs );
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
sched_param schedParam;
schedParam.sched_priority = sched_get_priority_max( SCHED_FIFO );
pthread_attr_t threadAttribute;
pthread_attr_init( & threadAttribute );
pthread_attr_setschedpolicy( & threadAttribute, schedPolicy );
pthread_attr_setinheritsched( & threadAttribute, PTHREAD_EXPLICIT_SCHED );
pthread_t& thread = threads[ threadIndex ];
pthread_setschedparam( thread, schedPolicy, & schedParam );
pthread_create( & thread, & threadAttribute, threadFunction, voidPtrArgs[ threadIndex ] );
}
for ( int threadIndex = 0; threadIndex < threadCount; ++threadIndex )
{
pthread_t thread = threads[ threadIndex ];
pthread_join( thread, NULL );
}
joinFunction( threadArgs );
}
249デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 22:45:44.01ID:reOPAGg30250デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 22:51:38.20ID:reOPAGg30251デフォルトの名無しさん (ワッチョイ 578a-/Wij)
2018/04/23(月) 22:53:42.39ID:voecBiJS0 釣り針デカいな
252デフォルトの名無しさん (ワッチョイ 2304-+3cQ)
2018/04/23(月) 23:14:39.42ID:gZ/aKTVF0 いまだに関数ポインタ使ってるのか。野蛮人。
std::functionってスレッドセーフじゃないの?
std::functionってスレッドセーフじゃないの?
253デフォルトの名無しさん (ワッチョイ 1a68-Mp6C)
2018/04/23(月) 23:18:02.49ID:YIxEn5Qs0 いまだ関数ポインタが使いこなせないんだけどやばいかな?
254デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 23:20:18.71ID:reOPAGg30 考えたらjoinの問題じゃないか
もし「単なる加算処理」が1スレッドでメモリ帯域使い潰していたらマルチスレッドにしてもどうしようもないのは明らかだよ
もし「単なる加算処理」が1スレッドでメモリ帯域使い潰していたらマルチスレッドにしてもどうしようもないのは明らかだよ
255デフォルトの名無しさん (ワッチョイ 0e8a-fvqh)
2018/04/23(月) 23:21:31.95ID:reOPAGg30 >>253
未だに関数ポインタなんて使ってるほうがやばい
未だに関数ポインタなんて使ってるほうがやばい
256デフォルトの名無しさん (ワッチョイ 5b9b-Th9u)
2018/04/23(月) 23:30:05.62ID:1JtTwXqR0 画像処理で合成処理をパラメータでもらう場合があるんだが
その場合内部処理と対応させるために関数ポインタは使うが
そういうのもダメ?
その場合内部処理と対応させるために関数ポインタは使うが
そういうのもダメ?
257デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/23(月) 23:35:26.41ID:reOPAGg30 ダメってわけじゃないけどさあw
C++ならもっと柔軟性のあるやりかたが幾らでもあるってこと
C++ならもっと柔軟性のあるやりかたが幾らでもあるってこと
258デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/23(月) 23:36:21.76ID:lnjW6wzS0 virtual関数もラムダ式も関数ポインタ
259デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/23(月) 23:40:33.42ID:awXEdMZR0 std::byteが邪魔すぎるんですけどg++で無効にするオプションってありますかね?
260デフォルトの名無しさん (ブーイモ MM67-BC+p)
2018/04/23(月) 23:50:59.76ID:9sQDUnnSM261デフォルトの名無しさん (ワッチョイ 2304-+3cQ)
2018/04/23(月) 23:51:42.53ID:gZ/aKTVF0262デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/24(火) 00:06:39.75ID:qFc5rpEV0 >>248
threadcountいくつになってるの?
threadcountいくつになってるの?
263はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/24(火) 00:06:56.48ID:VhsA5JFS0 忘れがちなことだが std::function は実行時の型を扱う。
画像処理などのようにヘビーな繰返しがあるような場面では関数ポインタを使った場合との間に深刻な速度差が生じることもなくはない。
画像処理などのようにヘビーな繰返しがあるような場面では関数ポインタを使った場合との間に深刻な速度差が生じることもなくはない。
264デフォルトの名無しさん (ワッチョイ 7acb-BC+p)
2018/04/24(火) 00:16:24.07ID:qFc5rpEV0 >>248
関数名からして、一度のreduce処理量は大したことなくて、何度も繰り返し呼んでない?
thread処理に必要な処理量が相対的に無視できなくなってるんじゃね?
スレッドは4本に制限して、各スレッドが処理する量を増やすかスレッドプール式にしては?
関数名からして、一度のreduce処理量は大したことなくて、何度も繰り返し呼んでない?
thread処理に必要な処理量が相対的に無視できなくなってるんじゃね?
スレッドは4本に制限して、各スレッドが処理する量を増やすかスレッドプール式にしては?
265デフォルトの名無しさん
2018/04/24(火) 00:17:16.38 C++だから関数ポインタ使わないとか頭おかしい
関数ポインタのほうが高速かつシンプルに書けるならそちらを選択すべき
関数ポインタのほうが高速かつシンプルに書けるならそちらを選択すべき
266デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/24(火) 00:20:31.80ID:N5/L/OXI0 皆富豪ばかりではない
267デフォルトの名無しさん (ワッチョイ 1a12-/G6U)
2018/04/24(火) 00:26:04.88ID:RoXKv00p0 富豪かどうかはおま環だろ
だから自己申告しないヤツが悪い
なんでこっちがエスパーみたいなことしなきゃいけないんだ
わたくしは教えないがあなたがわたしの環境を忖度しろってか?
ヴァカじゃねえの?
アフォに対してちゃあんと「テメーのスペックはいかほどですか」と尋ねろクズ
富豪かどうかはわからない、それを言わない人間がまず間違い、
それを逆手にとって相手をマウンティングするアフォがいるから話が進まない
だから自己申告しないヤツが悪い
なんでこっちがエスパーみたいなことしなきゃいけないんだ
わたくしは教えないがあなたがわたしの環境を忖度しろってか?
ヴァカじゃねえの?
アフォに対してちゃあんと「テメーのスペックはいかほどですか」と尋ねろクズ
富豪かどうかはわからない、それを言わない人間がまず間違い、
それを逆手にとって相手をマウンティングするアフォがいるから話が進まない
268デフォルトの名無しさん (ワッチョイ 9aeb-FlaZ)
2018/04/24(火) 00:38:30.68ID:Sy+ZRJzm0 関数ポインタの構文の方がかっこいいだろ!
269デフォルトの名無しさん (ラクッペ MMcb-x+X/)
2018/04/24(火) 00:47:04.42ID:hfyVIq8IM どんなスペックだろうと他のソフトがどれだけメモリや処理時間を喰い潰していようと自分の処理はサクッと終わらせたいといつも思う
270デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 01:40:17.33ID:2n4xWLsG0271デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/24(火) 03:16:15.83ID:CsMI0xmD0 >>248
調べてみたけどさっぱり判りません。
pthread_joinで各スレッドの終了を待って、その後、集計処理をするというのはごく渡り前の処理に見えるのですが、
何が行けないのでしょうか?
別の方法でスレッドの終了を待たねばならないのでしょうか?
自分勝手デスミア線が、具体的に問題点、改善点を指摘して下さいm(_ _)m。
調べてみたけどさっぱり判りません。
pthread_joinで各スレッドの終了を待って、その後、集計処理をするというのはごく渡り前の処理に見えるのですが、
何が行けないのでしょうか?
別の方法でスレッドの終了を待たねばならないのでしょうか?
自分勝手デスミア線が、具体的に問題点、改善点を指摘して下さいm(_ _)m。
272デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 03:31:10.06ID:2n4xWLsG0 いいから「単なる加算処理」全部見せろよこの包茎野郎
273デフォルトの名無しさん (ワッチョイ 9a91-Aj1d)
2018/04/24(火) 03:56:33.85ID:CsMI0xmD0 threadFunctionが、
void* CalcBasicStatics( void* threadArg ) {
BasicStaticsThreadArg* arg = reinterpret_cast< BasicStaticsThreadArg* >( threadArg );
double intervalOfX = arg->intervalOfX;
double x = arg->dividedRangeOfX.start;
double sumOfY = 0.0;
double sampleCount = 0;
const sc::Sampler& f = arg->f;
while ( x <= arg->dividedRangeOfX.end ){
double y = f( x );
sumOfY += y;
sampleCount++;
x += intervalOfX;
}
arg->sumOfY = sumOfY;
arg->sampleCount = sampleCount;
return nullptr;
}
joinFunctionが、
void CalcBasicStaticsJoin( std::vector< BasicStaticsThreadArg >& args ) {
double sampleCount = 0.0;
double sumOfY = 0.0;
for ( int i = 0; i < args.size(); ++I ) {
sumOfY += args[ i ].sumOfY;
sampleCount += args[ i ].sampleCount;
}
for ( int i = 0; i < args.size(); ++i ) { // 結果を書き込み
BasicStaticsThreadArg& arg = args[ i ];
arg.average = sumOfY / sampleCount;
}
}
です。細々すみません。
void* CalcBasicStatics( void* threadArg ) {
BasicStaticsThreadArg* arg = reinterpret_cast< BasicStaticsThreadArg* >( threadArg );
double intervalOfX = arg->intervalOfX;
double x = arg->dividedRangeOfX.start;
double sumOfY = 0.0;
double sampleCount = 0;
const sc::Sampler& f = arg->f;
while ( x <= arg->dividedRangeOfX.end ){
double y = f( x );
sumOfY += y;
sampleCount++;
x += intervalOfX;
}
arg->sumOfY = sumOfY;
arg->sampleCount = sampleCount;
return nullptr;
}
joinFunctionが、
void CalcBasicStaticsJoin( std::vector< BasicStaticsThreadArg >& args ) {
double sampleCount = 0.0;
double sumOfY = 0.0;
for ( int i = 0; i < args.size(); ++I ) {
sumOfY += args[ i ].sumOfY;
sampleCount += args[ i ].sampleCount;
}
for ( int i = 0; i < args.size(); ++i ) { // 結果を書き込み
BasicStaticsThreadArg& arg = args[ i ];
arg.average = sumOfY / sampleCount;
}
}
です。細々すみません。
274デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/24(火) 05:46:22.80ID:vHj8ybNt0 そのコード見ても
並列度もスレッドあたりのサンプル数も
1サンプルあたりのコスト(f)もわからないので
まるで意味がない
2または4並列で、1スレッドあたり1〜10Mサンプルくらい処理するようにすれば
速くなるか少なくともスレッドを使わない場合より遅くならないと思う
同じ速度ということはメモリ帯域が律速なのかもね
並列度もスレッドあたりのサンプル数も
1サンプルあたりのコスト(f)もわからないので
まるで意味がない
2または4並列で、1スレッドあたり1〜10Mサンプルくらい処理するようにすれば
速くなるか少なくともスレッドを使わない場合より遅くならないと思う
同じ速度ということはメモリ帯域が律速なのかもね
275デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/24(火) 05:46:49.67ID:vHj8ybNt0 同じ速度
↓
スレッドを使わない場合と同じ速度
↓
スレッドを使わない場合と同じ速度
276デフォルトの名無しさん (ワッチョイ 8723-wmjz)
2018/04/24(火) 05:55:18.81ID:vHj8ybNt0 fでメモリのどっかから数値を読んでいるんだと思うけど、
これがなるべく連続したアクセス(局所化を謀る)になるようにループを構成できれば速くなるかもしれない。
この辺りはググれば色々参考になるページがあると思うが
いまググッたらそれらしいページがあったので書いておく
http://myoga.web.fc2.com/prog/cpp/opti02.htm
仕様として外からfが与えられるなら無理な話かもしれない。
もちろん interval が 1 で f(x) が { return v[x]; } のような最適なケースよりは速くならないので
その辺りは無駄な努力をしないよう測っておきましょう。
これがなるべく連続したアクセス(局所化を謀る)になるようにループを構成できれば速くなるかもしれない。
この辺りはググれば色々参考になるページがあると思うが
いまググッたらそれらしいページがあったので書いておく
http://myoga.web.fc2.com/prog/cpp/opti02.htm
仕様として外からfが与えられるなら無理な話かもしれない。
もちろん interval が 1 で f(x) が { return v[x]; } のような最適なケースよりは速くならないので
その辺りは無駄な努力をしないよう測っておきましょう。
277デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/24(火) 06:54:08.05ID:RDzdLFpT0 fの中身が公開出来るなら公開して
複数あるならそのうちの1個でいいから
あと、
1回のthreadFunctionで何個くらいfを計算する?
複数あるならそのうちの1個でいいから
あと、
1回のthreadFunctionで何個くらいfを計算する?
278デフォルトの名無しさん (スップ Sd5a-wOeC)
2018/04/24(火) 09:24:50.43ID:jHZYDUEYd >>250
joinについて勉強しろとか偉そうに言ってたのは何だったの
joinについて勉強しろとか偉そうに言ってたのは何だったの
279デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 18:12:35.67ID:2n4xWLsG0280デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 18:15:41.14ID:2n4xWLsG0 fやら具体的なargsの内容やら処理時間測定のやりかたも記述されてないし
んなもの誰も答えられるかよ
んなもの誰も答えられるかよ
281デフォルトの名無しさん (スップ Sd5a-wOeC)
2018/04/24(火) 18:32:28.83ID:6+u8wIQpd282デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 18:41:27.90ID:2n4xWLsG0 >>281
本当に「明らかに」だと思ってるの?バカですか?
本当に「明らかに」だと思ってるの?バカですか?
283デフォルトの名無しさん (ワッチョイ 237f-9jjH)
2018/04/24(火) 18:45:24.94ID:cOEBcXkN0 サンプルレベルのJoinの使い方をみて
「アハハハハ!ジョークのつもりかなんか?そうじゃないならjoinの動きを勉強しろ」
は流石に笑ってしまう
「アハハハハ!ジョークのつもりかなんか?そうじゃないならjoinの動きを勉強しろ」
は流石に笑ってしまう
284デフォルトの名無しさん (ワッチョイ 0e8a-HDkP)
2018/04/24(火) 18:47:53.38ID:2n4xWLsG0 勝手に笑ってればw
285デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/24(火) 18:49:15.43ID:Z9G2Fq/Ha cin で、個数の決まっていない整数たちを読み込みたいのですが、どうすればいいでしょうか?
整数たちの個数 n が分かっていれば、以下のように読み込めばいいですが。。。
vector<int> v;
int i;
for (int i = 0; i < n; ++i) {
cin >> i
v.push_back(i)
}
整数たちの個数 n が分かっていれば、以下のように読み込めばいいですが。。。
vector<int> v;
int i;
for (int i = 0; i < n; ++i) {
cin >> i
v.push_back(i)
}
286デフォルトの名無しさん (ブーイモ MM26-BC+p)
2018/04/24(火) 18:59:54.20ID:lGEjd9Z7M287デフォルトの名無しさん (ワッチョイ 2393-MaWf)
2018/04/24(火) 19:02:18.64ID:of0BgjlM0288デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/24(火) 19:15:13.81ID:Z9G2Fq/Ha >>287
ありがとうございました。
別の質問なのですが、一般的に、vectorの使用頻度というのはどれくらいでしょうか?
配列でやれることもすべて vector を使ってやるという人は多いでしょうか?
それとも、効率などを考えて配列で極力済ませるという人が多いでしょうか?
もちろん、ケースバイケースでしょうけれども、そのあたりの常識がないので、大体
どんな感じなのかが知りたいです。
ありがとうございました。
別の質問なのですが、一般的に、vectorの使用頻度というのはどれくらいでしょうか?
配列でやれることもすべて vector を使ってやるという人は多いでしょうか?
それとも、効率などを考えて配列で極力済ませるという人が多いでしょうか?
もちろん、ケースバイケースでしょうけれども、そのあたりの常識がないので、大体
どんな感じなのかが知りたいです。
289デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/24(火) 19:17:35.43ID:Z9G2Fq/Ha 自分としては、効率など細かいことは考えずに、vectorを使って問題ない
場面ではvectorを使うという風にしたいのですが。。。
vectorを使っても速度などの点で問題ない場合、一般的なプログラマーなら
どうするのかが知りたいです。
場面ではvectorを使うという風にしたいのですが。。。
vectorを使っても速度などの点で問題ない場合、一般的なプログラマーなら
どうするのかが知りたいです。
290デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/24(火) 19:20:20.45ID:Z9G2Fq/Ha vector<int> v;
int n;
cin >> n;
int t;
for (int i = 0; i < n; ++i) {
cin >> t;
v.push_back(t);
}
int *p;
int n;
cin >> n;
p = new int[n];
for (int i = 0; i < n; ++i) {
cin >> p[i];
}
どちらにするのが普通なのかの常識がありません。
int n;
cin >> n;
int t;
for (int i = 0; i < n; ++i) {
cin >> t;
v.push_back(t);
}
int *p;
int n;
cin >> n;
p = new int[n];
for (int i = 0; i < n; ++i) {
cin >> p[i];
}
どちらにするのが普通なのかの常識がありません。
291片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/24(火) 19:30:42.86ID:Eukzbh8yd >>290
生のnew/deleteは、なるべく使わないのがいい。delete忘れ、例外などでバグの元や維持コストになる。
生のnew/deleteは、なるべく使わないのがいい。delete忘れ、例外などでバグの元や維持コストになる。
292デフォルトの名無しさん (アウアウウー Sa47-9jjH)
2018/04/24(火) 19:33:20.39ID:Z9G2Fq/Ha293片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/24(火) 19:36:23.45ID:Eukzbh8yd294デフォルトの名無しさん (ワッチョイ b67f-KMMs)
2018/04/24(火) 19:38:54.99ID:t8t5TswZ0 >>290
上だったらv.reserve(n)しておこう
上だったらv.reserve(n)しておこう
>>289
私は書き始めは std::vector を専ら使っており、後で他のコンテナに換えています
私は書き始めは std::vector を専ら使っており、後で他のコンテナに換えています
296デフォルトの名無しさん (スップ Sd5a-Incm)
2018/04/24(火) 19:46:25.46ID:UxTdQ3KXd >>293
コード読めないの?
コード読めないの?
297片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdba-gnn3)
2018/04/24(火) 19:51:37.43ID:Eukzbh8yd >>296
普通の人間なら、文脈を読み取れるけど、俺はコンピューターに近いんだ。
普通の人間なら、文脈を読み取れるけど、俺はコンピューターに近いんだ。
298はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/24(火) 20:04:19.79ID:VhsA5JFS0 >>289
実用上の問題が無いことがわかっている範囲内であれば、
深く考えずに vector だけで乗り切るのも悪い選択じゃないと思うよ。
ただ、使い分けることで意図を表現しやすい。
たとえば list を使っていれば要素の挿入や削除が頻繁なデータなんだなって思うし、
array が使われていれば要素の個数が固定なんだなって思う。
速度的に影響がない程度の規模であっても、
それが適しているような操作をこれからするのだという意思表明は人間がプログラムを読むときのヒントになる。
そして、そういうヒントは書いている途中にこそ必要なものなので、 >>295 のように後から整理していくスタイルは個人的には好きじゃないな。
実用上の問題が無いことがわかっている範囲内であれば、
深く考えずに vector だけで乗り切るのも悪い選択じゃないと思うよ。
ただ、使い分けることで意図を表現しやすい。
たとえば list を使っていれば要素の挿入や削除が頻繁なデータなんだなって思うし、
array が使われていれば要素の個数が固定なんだなって思う。
速度的に影響がない程度の規模であっても、
それが適しているような操作をこれからするのだという意思表明は人間がプログラムを読むときのヒントになる。
そして、そういうヒントは書いている途中にこそ必要なものなので、 >>295 のように後から整理していくスタイルは個人的には好きじゃないな。
>>298
>それが適しているような操作をこれからするのだ
うーむ、いろいろと考えさせられます
std::vector でなら使えても、std::list では使えない、というのはあるから、最初からそれを考慮しておくのは…よくありますねえ
>それが適しているような操作をこれからするのだ
うーむ、いろいろと考えさせられます
std::vector でなら使えても、std::list では使えない、というのはあるから、最初からそれを考慮しておくのは…よくありますねえ
300デフォルトの名無しさん (ワッチョイ 9a23-wmjz)
2018/04/24(火) 20:43:20.11ID:Ukt80uX+0 vector は list に比べた場合、
データがメモリ上隣接して並んでいるので
→そういう引数を要する各種 API にそのまま渡せる
→メモリアクセスが局所的にできてキャッシュが効く
予約領域を拡張する場合にのみアロケータが呼ばれるので追加時のアロケータによるオーバーヘッドが低い
とかの良い特性もあるので要素のコピーが軽くて個数が小さいものはvectorにして損することは少ない
データがメモリ上隣接して並んでいるので
→そういう引数を要する各種 API にそのまま渡せる
→メモリアクセスが局所的にできてキャッシュが効く
予約領域を拡張する場合にのみアロケータが呼ばれるので追加時のアロケータによるオーバーヘッドが低い
とかの良い特性もあるので要素のコピーが軽くて個数が小さいものはvectorにして損することは少ない
301デフォルトの名無しさん (ワッチョイ b704-9jjH)
2018/04/24(火) 21:34:54.87ID:JVcrtulg0 BidirectionalIteratorとRandomAccessIteratorだろ
規格用語で言えば短く済む
規格用語で言えば短く済む
302デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/24(火) 22:35:44.34ID:iCiOyu8i0 std::listはメモリ局所性がないので今どきのマシンだとクソ遅い
積極的に使う理由は基本的にない
積極的に使う理由は基本的にない
303デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/24(火) 23:33:49.11ID:RDzdLFpT0 積極的にって...
使いどころで使うための物だよ
使いどころで使うための物だよ
304デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/24(火) 23:51:07.95ID:z/eaD8m90 メリットとデメリットを見極められないとコンテナを使いこなすのは難しい
昔から配列を弄り倒している古参にとってはこんなに便利な物はないと思うがね
90年初頭辺りにタイムスリップして実際に構造を真似てフルスクラッチでテンプレートなんぞなかった世界で組んでみればコンテナの挙動は自ずと理解できると思うが時代がわるかったな
今は何も苦労しなくても容易になんでも手に入る世界だからな
修業が足らんよ青二才
昔から配列を弄り倒している古参にとってはこんなに便利な物はないと思うがね
90年初頭辺りにタイムスリップして実際に構造を真似てフルスクラッチでテンプレートなんぞなかった世界で組んでみればコンテナの挙動は自ずと理解できると思うが時代がわるかったな
今は何も苦労しなくても容易になんでも手に入る世界だからな
修業が足らんよ青二才
305デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/24(火) 23:55:55.63ID:iCiOyu8i0 >>303
その使い所がよほど特殊な状況以外にないんだよ
その使い所がよほど特殊な状況以外にないんだよ
306デフォルトの名無しさん (ワッチョイ e3b3-9jjH)
2018/04/24(火) 23:58:59.30ID:4OXNJpQB0 大規模C++ソフトウェアデザインという本を読んでいます。
冗長インクルードガードが紹介されているのですが、効果あるんですかね。
古めの本なのですが、最近のコンパイラだと意味ないですかね
冗長インクルードガードが紹介されているのですが、効果あるんですかね。
古めの本なのですが、最近のコンパイラだと意味ないですかね
307>>306 (ワッチョイ e3b3-9jjH)
2018/04/25(水) 00:13:26.67ID:2lHeUIKm0308デフォルトの名無しさん (ワッチョイ 2304-+3cQ)
2018/04/25(水) 00:14:20.28ID:MdUECE2K0 #pragma once って規格化されたんだっけ?
309デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/25(水) 01:03:31.17ID:YD2+CY860 されてない
しようしようと20年言われ続けて技術的な問題でできずにいる
しようしようと20年言われ続けて技術的な問題でできずにいる
310デフォルトの名無しさん (ワッチョイ 9a91-7Gvz)
2018/04/25(水) 02:07:21.83ID:/kuz3CrQ0 243です。
アドバイスを頂き検討したのですが、メモリが散らかっているのが原因と判断しました。
都合により細々とした実装の話は割愛しますが、付き合ってくれた皆さんありがとうございました。
アドバイスを頂き検討したのですが、メモリが散らかっているのが原因と判断しました。
都合により細々とした実装の話は割愛しますが、付き合ってくれた皆さんありがとうございました。
311デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/25(水) 02:33:10.54ID:wwssDiVV0 どおりで未だに警告でるわけだ
312デフォルトの名無しさん (ワッチョイ 2350-Incm)
2018/04/25(水) 06:26:59.61ID:8qaCWrbS0 >>305
その特殊な状況の為にlistが存在する
私の場合は特殊なプログラムを書くことが多いので
使いどころは多いのかもしれない
また、普通の組み込みC言語でも簡易な片方向リストとかを使ったりする (C++じゃないのでlistは無い)
その特殊な状況の為にlistが存在する
私の場合は特殊なプログラムを書くことが多いので
使いどころは多いのかもしれない
また、普通の組み込みC言語でも簡易な片方向リストとかを使ったりする (C++じゃないのでlistは無い)
313デフォルトの名無しさん (ドコグロ MMcb-cuLp)
2018/04/25(水) 07:15:49.01ID:ntbHaYzVM314デフォルトの名無しさん (アウアウカー Sa43-2MBd)
2018/04/25(水) 07:30:39.44ID:kzCoHflQa 今はモジュールの方を標準化しようとしてるんじゃ
315デフォルトの名無しさん (ワッチョイ 8a7e-H4fB)
2018/04/25(水) 08:47:25.49ID:wwssDiVV0 偉い人が考えてることはわからん
316デフォルトの名無しさん (ワッチョイ 0e76-9jjH)
2018/04/25(水) 11:24:32.26ID:iscLTfMY0 >>313
プリプロセッサは C++ じゃないからね
C++ 以外の言語と共有しているツールなので
それらと歩調を合わせる必要があるし
プリプロセッサだけ独立の規格にするなら
C++ を含め、諸言語の規格も
プリプロセッサのバージョンとどう付き合うのか
策定せにゃならん
プリプロセッサは C++ じゃないからね
C++ 以外の言語と共有しているツールなので
それらと歩調を合わせる必要があるし
プリプロセッサだけ独立の規格にするなら
C++ を含め、諸言語の規格も
プリプロセッサのバージョンとどう付き合うのか
策定せにゃならん
317デフォルトの名無しさん (ドコグロ MMcb-cuLp)
2018/04/25(水) 12:23:57.05ID:ntbHaYzVM318はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/25(水) 15:37:25.53ID:7Yqb38x00 現行では、 #include ディレクティブは「対象ファイルの内容がそこに書かれているかのようにふるまう」という規則なので、
ヘッダファイル内のプラグマ (#pragma once) の解釈が始まるのはインクルードされた後になる。
もちろん対象範囲がコンパイル単位全体に及んでしまっては #pragma once の意味がないが、
現状の仕様に辻褄を合わせるとそうなる。
実装した処理系がもうあるんだから実装に沿うように規定しなおすってことはできなくは無いんだろうが、
#pragma once を仕様に入れるのに #pragma once の項目を追加すれば済むわけではないってことは理解してくれ。
それと、プリプロセッサの仕様は C/C++ の一部なのは確かだが、
挙動を規定しきれていないのじゃないかということは指摘されている。
https://qiita.com/ruiu/items/4d471216b71ab48d8b74#3%E6%9C%8817%E6%97%A5
うやむやでやってきてるところを整理する必要は有ると思う。
>>317
Haskell (GHC) は C プリプロセッサを使うよ。
汎用的に使いたいなら M4 とかの方がいいとは思うけど、
Cプリプロセッサに慣れている人は多いから……。
ヘッダファイル内のプラグマ (#pragma once) の解釈が始まるのはインクルードされた後になる。
もちろん対象範囲がコンパイル単位全体に及んでしまっては #pragma once の意味がないが、
現状の仕様に辻褄を合わせるとそうなる。
実装した処理系がもうあるんだから実装に沿うように規定しなおすってことはできなくは無いんだろうが、
#pragma once を仕様に入れるのに #pragma once の項目を追加すれば済むわけではないってことは理解してくれ。
それと、プリプロセッサの仕様は C/C++ の一部なのは確かだが、
挙動を規定しきれていないのじゃないかということは指摘されている。
https://qiita.com/ruiu/items/4d471216b71ab48d8b74#3%E6%9C%8817%E6%97%A5
うやむやでやってきてるところを整理する必要は有ると思う。
>>317
Haskell (GHC) は C プリプロセッサを使うよ。
汎用的に使いたいなら M4 とかの方がいいとは思うけど、
Cプリプロセッサに慣れている人は多いから……。
319デフォルトの名無しさん (ワッチョイ 0e76-9jjH)
2018/04/25(水) 16:38:46.53ID:iscLTfMY0 また別な話
#includeしようとしているファイルが
過去に#includeしたファイルと同一かどうか
という判定も意外に厄介だね
ハードリンクできるファイルシステムと
そうでないファイルシステムがあったりするし
ハッシュが一致しても衝突かどうかの問題もある
#includeしようとしているファイルが
過去に#includeしたファイルと同一かどうか
という判定も意外に厄介だね
ハードリンクできるファイルシステムと
そうでないファイルシステムがあったりするし
ハッシュが一致しても衝突かどうかの問題もある
320はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/25(水) 18:09:25.23ID:7Yqb38x00 ハードリンク、シンボリックリンクが無いファイルシステムだったとしても、サーチパスの問題も思いつくな。
たとえばカレントディレクトリと、カレントディレクトリ直下の foo ディレクトリからヘッダファイルを探すようになっているとき、
#include "bar.h"
と
#include "foo/bar.h"
は同じファイルを指しているが、表現が異なる。
同一のファイルとして除去すべきだろうか?
たとえばカレントディレクトリと、カレントディレクトリ直下の foo ディレクトリからヘッダファイルを探すようになっているとき、
#include "bar.h"
と
#include "foo/bar.h"
は同じファイルを指しているが、表現が異なる。
同一のファイルとして除去すべきだろうか?
321デフォルトの名無しさん (スップ Sd5a-Incm)
2018/04/25(水) 19:34:37.54ID:ch3bizaad #if ****
#pragma once
#endif
とかどうなるの?
複数回のインクルードで条件がちがっていたら?
#pragma once
#endif
とかどうなるの?
複数回のインクルードで条件がちがっていたら?
322デフォルトの名無しさん (ドコグロ MMcb-cuLp)
2018/04/25(水) 20:33:35.69ID:ntbHaYzVM >>318
> 実装した処理系がもうあるんだから実装に沿うように規定しなおすってことはできなくは無いんだろうが、
規定すればいいだけだろ?
どこに技術的な問題があるんだ?
政治的な問題だと言うならまだしも
>>319-320みたいな話は処理系定義ですむ話
>>321は少し悩ましいがそもそも途中まで読んでから#pragma onceとか言われても面倒だから書くならファイルの最初に書けとかの制限をつければいい
> 挙動を規定しきれていないのじゃないかということは指摘されている。
いやいや、その子ちゃんと規格読めてないだけでしょ w
> Haskell (GHC) は C プリプロセッサを使うよ。
仕様を流用してるだけでしょ?
何かのコンパイラと共有してるわけじゃないと思うが
> 実装した処理系がもうあるんだから実装に沿うように規定しなおすってことはできなくは無いんだろうが、
規定すればいいだけだろ?
どこに技術的な問題があるんだ?
政治的な問題だと言うならまだしも
>>319-320みたいな話は処理系定義ですむ話
>>321は少し悩ましいがそもそも途中まで読んでから#pragma onceとか言われても面倒だから書くならファイルの最初に書けとかの制限をつければいい
> 挙動を規定しきれていないのじゃないかということは指摘されている。
いやいや、その子ちゃんと規格読めてないだけでしょ w
> Haskell (GHC) は C プリプロセッサを使うよ。
仕様を流用してるだけでしょ?
何かのコンパイラと共有してるわけじゃないと思うが
323デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/25(水) 20:43:06.43ID:YD2+CY860 君よりよっぽど賢い人達が20年間悩み続けて未だに出来てないことを舐めない方がいい
324デフォルトの名無しさん (ドコグロ MMcb-cuLp)
2018/04/25(水) 21:22:23.29ID:ntbHaYzVM325デフォルトの名無しさん (ワッチョイ 36e7-8q6u)
2018/04/25(水) 21:47:31.85ID:YD2+CY860 新規格の季節になると毎回のように標準化委員会の議題に上がってるんだが?
326デフォルトの名無しさん (アウアウウー Sa47-Mp6C)
2018/04/25(水) 22:20:34.77ID:fPsUNFh1a モジュール方式になったらヘッダファイルが要らなくなる?
327デフォルトの名無しさん (ワッチョイ 0e76-9jjH)
2018/04/25(水) 22:28:42.99ID:iscLTfMY0 >>322
> 処理系定義ですむ話
それはおかしいでしょ
ハードリンクできる処理系からできない処理系に移植したtarボールの
#includeの挙動が未規定なら結局インクルードガードを自前で書くことになる
> 処理系定義ですむ話
それはおかしいでしょ
ハードリンクできる処理系からできない処理系に移植したtarボールの
#includeの挙動が未規定なら結局インクルードガードを自前で書くことになる
328デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/25(水) 22:48:43.95ID:7S1PATFb0329デフォルトの名無しさん (ワッチョイ 9a34-lUQu)
2018/04/25(水) 22:55:12.61ID:eMzyfy/H0 #pragma once なんて
once upon a time だぜ
今はもうだれも気に留めてやしねぇ
once upon a time だぜ
今はもうだれも気に留めてやしねぇ
330デフォルトの名無しさん (ワッチョイ 0e76-9jjH)
2018/04/25(水) 23:31:56.94ID:iscLTfMY0 アホの相手は疲れたわ
もう寝る
もう寝る
331はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b66f-9jjH)
2018/04/25(水) 23:46:14.09ID:7Yqb38x00 >>322
トピックとして大きすぎるので面倒くせえってだけの話。
トピックとして大きすぎるので面倒くせえってだけの話。
332デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/25(水) 23:50:29.61ID:ayqRGoGD0 #pragma once
ぐらいPerlでインクルードガードに自動変換できる、
ていうか無くてもできるから自前で書くとかありえん…
ぐらいPerlでインクルードガードに自動変換できる、
ていうか無くてもできるから自前で書くとかありえん…
333デフォルトの名無しさん (ワッチョイ 9abd-Jtac)
2018/04/25(水) 23:51:29.73ID:ayqRGoGD0 むしろプリコンパイルヘッダーが規格化されないの方のが悩ましい…
334デフォルトの名無しさん (ワッチョイ 9ab3-cuLp)
2018/04/25(水) 23:58:40.94ID:7S1PATFb0 >>330
逃げるなら黙って逃げろよ w
逃げるなら黙って逃げろよ w
335デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/26(木) 00:10:34.39ID:0UXBsrps0 ていうか#pragma onceとか#ifdef〜#endifによるインクル〜ドガ〜ドのシノニム以外の何者でもないと思うが
一方#ifdef〜#endifによるインクル〜ドガ〜ドは
「対象ファイルの内容がそこに書かれているかのようにふるまう」
という規則の下で立派に機能していると思うし、
>>321のように等価な#ifdef〜#endifによるインクル〜ドガ〜ドが存在し得ない場合はエラーにしたら良いと思うし、
ハードリンクできる処理系かどうかに関係なく#ifdef〜#endifによるインクル〜ドガ〜ドは機能していると思うし
(だいたい1バイナリのビルド中にハードリンクの中身が変わるみたいな想定をする方がおかしい=ハードリンクはそうでないファイルと区別がつかないとみなせるハズ
だったら#pragma onceも問題なく規格化が可能なのでは…
少なくとも技術的な問題とかとうていナッシング?
一方#ifdef〜#endifによるインクル〜ドガ〜ドは
「対象ファイルの内容がそこに書かれているかのようにふるまう」
という規則の下で立派に機能していると思うし、
>>321のように等価な#ifdef〜#endifによるインクル〜ドガ〜ドが存在し得ない場合はエラーにしたら良いと思うし、
ハードリンクできる処理系かどうかに関係なく#ifdef〜#endifによるインクル〜ドガ〜ドは機能していると思うし
(だいたい1バイナリのビルド中にハードリンクの中身が変わるみたいな想定をする方がおかしい=ハードリンクはそうでないファイルと区別がつかないとみなせるハズ
だったら#pragma onceも問題なく規格化が可能なのでは…
少なくとも技術的な問題とかとうていナッシング?
336デフォルトの名無しさん (ワッチョイ d3cb-EDrg)
2018/04/26(木) 00:21:25.86ID:44bF0Q7g0 ちょっとはググれよ。
お前みたいなやつを「殆し」って言うんだぜ
お前みたいなやつを「殆し」って言うんだぜ
337デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/26(木) 00:41:00.06ID:0UXBsrps0 ↑ググってもボンクラが書いたような駄文が見つかるだけなので却下。
1. #pragma onceは#ifdef〜#endifによるインクル〜ドガ〜ドのシノニムである
2. #ifdef〜#endifによるインクル〜ドガ〜ドは世の中で立派に機能を果たしている
にもかかわらず、
3. #pragma onceの規格化の有効な解が存在しない
という驚くべき結論がなぜ導かれるのやろうか…
1. #pragma onceは#ifdef〜#endifによるインクル〜ドガ〜ドのシノニムである
2. #ifdef〜#endifによるインクル〜ドガ〜ドは世の中で立派に機能を果たしている
にもかかわらず、
3. #pragma onceの規格化の有効な解が存在しない
という驚くべき結論がなぜ導かれるのやろうか…
338デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 06:29:49.76ID:IAeApo/t0 インクルードガードを自前で書くたびに
毎度毎度ワンパターンでタイプ数だけは結構多い不毛な作業は
機械化できないかと考えるのは至極当然
むしろ何の疑問も持たないやつは適性に疑問符がつく
インクルードガード用のフラグマクロの命名則にも不安がつきまとい
無名namespaceのように衝突しない保証があったらなあと思ったりもする
毎度毎度ワンパターンでタイプ数だけは結構多い不毛な作業は
機械化できないかと考えるのは至極当然
むしろ何の疑問も持たないやつは適性に疑問符がつく
インクルードガード用のフラグマクロの命名則にも不安がつきまとい
無名namespaceのように衝突しない保証があったらなあと思ったりもする
339デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 07:22:21.59ID:4xU9Va0kM 要するに同じファイルであるかをどうやって判定するかの問題
インクルードガードは利用者(プログラマー)に識別子を決めさせる(押し付けたとも言う)ことで実現してる
なので押し付けられたプログラマーには
> インクルードガード用のフラグマクロの命名則にも不安がつきまとい
みたいなことが発生する
#pragma onceはこの判定を処理系側でやるんだが例えばファイルの絶対パスで判断するとかファイルをインクルードする前にmd5とかのハッシュを求めて判断するとかすればいいだけ
ハードリンクとかで違う名前つけて#pragma onceがうまく動かないとか言うアホとかは無視すればいいし、ハッシュの衝突が心配と言うなら衝突した時に比較するようにすればいい
どういう仕様がいいのかで揉めるのはあるけど技術的な問題とか言ってる奴はちょっと知能が足りなさすぎ
インクルードガードは利用者(プログラマー)に識別子を決めさせる(押し付けたとも言う)ことで実現してる
なので押し付けられたプログラマーには
> インクルードガード用のフラグマクロの命名則にも不安がつきまとい
みたいなことが発生する
#pragma onceはこの判定を処理系側でやるんだが例えばファイルの絶対パスで判断するとかファイルをインクルードする前にmd5とかのハッシュを求めて判断するとかすればいいだけ
ハードリンクとかで違う名前つけて#pragma onceがうまく動かないとか言うアホとかは無視すればいいし、ハッシュの衝突が心配と言うなら衝突した時に比較するようにすればいい
どういう仕様がいいのかで揉めるのはあるけど技術的な問題とか言ってる奴はちょっと知能が足りなさすぎ
340デフォルトの名無しさん (ワッチョイ 4193-JpCb)
2018/04/26(木) 07:42:18.98ID:n/ljx3l20 >>338 #ifndef 形式のインクルードガードを自前で書くとタイプ数が多いし
識別名を打ち間違える危険もあるから .h のファイルを新規作成したときに
自動的に入力されるようにエディタのマクロにしたよ。
まぁ、識別名をファイル名から作ってるから、ファイル名の変更でアレだけど。
昔(フロッピーでやってた時代?)は #ifndef 形式でガードすると
どのみちヘッダファイルをまるごと読み込まなきゃならないから、
#pragma once の方がコンパイル時間において優れてる、などと言ったけど、
ハッシュを計算して同一か検証するとか手間が増えるなら
時間の面での優位性はなくなったのかな。
識別名を打ち間違える危険もあるから .h のファイルを新規作成したときに
自動的に入力されるようにエディタのマクロにしたよ。
まぁ、識別名をファイル名から作ってるから、ファイル名の変更でアレだけど。
昔(フロッピーでやってた時代?)は #ifndef 形式でガードすると
どのみちヘッダファイルをまるごと読み込まなきゃならないから、
#pragma once の方がコンパイル時間において優れてる、などと言ったけど、
ハッシュを計算して同一か検証するとか手間が増えるなら
時間の面での優位性はなくなったのかな。
341はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-luqG)
2018/04/26(木) 09:45:48.32ID:P0bCzIha0 「技術的な」というときの技術は「プログラミング技術」の意味じゃないこともあるんだよ。
前置きが無い限り広すぎてあんまり意味ない。
実装がいくつもあるのに、仕様策定にあたっての言葉で出てくる「技術的な」なんだから文脈でわかれよ。
仕様に落とし込む難しさが元々の論点。
ハードリンクの話題は「同一のファイルとは何か」を定義する難しさの一例で、実装のことなんか言ってない。
このスレで既に上がっている選択肢だけでも
・ 内容が同じ
・ 絶対パスが同じ
・ #include ディレクティブ中の表現が同じ
・ inode が同じ (ハードリンクは同一とみなす)
があり、内容の一致を選択する場合以外は言語の外の世界の環境に関する記述が必要になる。
世の中にある色んな環境のことを考慮して文面にする難しさってのはわかるだろ?
そんなわけで、個人的には内容の一致だけで判定するのが (仕様として定義するにあたって) 一番簡単だと思う。
ODR に関するルールの中にも同じトークン列を要求するものがあるし。
それに加えて >>318 で取り上げた展開手順の規則をなんとかする必要はあるが、 >>321 に解を与えるような上手い簡単な規則は思いつかないな。
既に多く書かれてしまっているコードの現状との互換性を考えると >>322 のいうような、
#pragma once を書ける場所を制限するような規則は選択できないと思う。
結局は複雑なものにならざるを得ない。
そんなのほっといてモジュールの導入に邁進しようぜっていうのは妥当な方針だろ。
前置きが無い限り広すぎてあんまり意味ない。
実装がいくつもあるのに、仕様策定にあたっての言葉で出てくる「技術的な」なんだから文脈でわかれよ。
仕様に落とし込む難しさが元々の論点。
ハードリンクの話題は「同一のファイルとは何か」を定義する難しさの一例で、実装のことなんか言ってない。
このスレで既に上がっている選択肢だけでも
・ 内容が同じ
・ 絶対パスが同じ
・ #include ディレクティブ中の表現が同じ
・ inode が同じ (ハードリンクは同一とみなす)
があり、内容の一致を選択する場合以外は言語の外の世界の環境に関する記述が必要になる。
世の中にある色んな環境のことを考慮して文面にする難しさってのはわかるだろ?
そんなわけで、個人的には内容の一致だけで判定するのが (仕様として定義するにあたって) 一番簡単だと思う。
ODR に関するルールの中にも同じトークン列を要求するものがあるし。
それに加えて >>318 で取り上げた展開手順の規則をなんとかする必要はあるが、 >>321 に解を与えるような上手い簡単な規則は思いつかないな。
既に多く書かれてしまっているコードの現状との互換性を考えると >>322 のいうような、
#pragma once を書ける場所を制限するような規則は選択できないと思う。
結局は複雑なものにならざるを得ない。
そんなのほっといてモジュールの導入に邁進しようぜっていうのは妥当な方針だろ。
342デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 11:12:45.83ID:IAeApo/t0343デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 11:13:52.62ID:IAeApo/t0 会社にもいるよね今の野党みたいなアイディアキラー
344デフォルトの名無しさん (ブーイモ MM85-MzrX)
2018/04/26(木) 11:26:33.21ID:+C2ovlRwM この板の別スレにも跳梁跋扈してるな
345デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 12:36:39.87ID:4xU9Va0kM346デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 13:01:09.90ID:IAeApo/t0 提示してねえだろ、おまえは無視つったんだよ
嘘つくんじゃねえ
嘘つくんじゃねえ
347はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-luqG)
2018/04/26(木) 13:58:41.43ID:P0bCzIha0 >>345
私はこの件について、技術的な問題があるとは述べてない。
その箇所の後に技術的という言葉は広範すぎて (言い換えれば、具体性がないので) 意味ないという意味のことを書いてるつもりなんだが。
それとは別に、私の考える問題を端的に言うと仕様の文面に落とし込むのは難しいねっていう、そんだけのこと。
私はこの件について、技術的な問題があるとは述べてない。
その箇所の後に技術的という言葉は広範すぎて (言い換えれば、具体性がないので) 意味ないという意味のことを書いてるつもりなんだが。
それとは別に、私の考える問題を端的に言うと仕様の文面に落とし込むのは難しいねっていう、そんだけのこと。
348デフォルトの名無しさん (スップ Sdf3-LNFl)
2018/04/26(木) 14:09:35.01ID:9t94Lsi9d 相談スレであって要望スレじゃない
349デフォルトの名無しさん (スップ Sdf3-LNFl)
2018/04/26(木) 14:10:26.12ID:9t94Lsi9d 中身のないガキの言い合いは他で
>>348
現時点での問題点をはっきりさせることに意味はあると思いますよ…
現時点での問題点をはっきりさせることに意味はあると思いますよ…
351デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 17:56:28.00ID:4xU9Va0kM352デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/26(木) 18:15:04.17ID:EM3O7qLA0353デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 18:20:39.64ID:IAeApo/t0354デフォルトの名無しさん (スップ Sdf3-LNFl)
2018/04/26(木) 19:18:47.48ID:bSbrcQnXd ガキの喧嘩は他でやれ
355デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 19:29:11.00ID:HtO+dzj70 俺は>>339が正しいと思うぜ。
というか>>341は明確に間違ってるだろ。色々と。
「ハードリンクガー」なんてのは論外。規格で定めるべき事項ではない。
規格で定めるべきなのは、
・全く同一の中身だが実体が異なる場合でも #pragma once は有効か?
(cp A.h B.h の場合にも B を読み込むか?)
だ。そしてこれは当然現行のインクルードガードと同じ方向に揃えるべきであり、
・読み込んではいけない
という仕様になるのも自明だ。
絶対パスやinodeやハードリンクというのは、
・通常のファイルシステムであれば、絶対パスが同一なら同じファイルを参照する
(=同じ中身であることが保証される)
・inodeでファイルシステムが実装されているのなら、
同じinodeを指すファイル(=ハードリンク)の場合には、同じ実体を参照する
(=同じ中身であることが保証される)
であって、これらは「全く同一の中身」であることを確認する手段でしかない。
これらが有効な環境では間引くのに用いればいいだけ。勿論ハッシュを使ってもいい。
これらが別物に見えるのなら、それは抽象思考が出来ない馬鹿だからだよ。
ファイルシステム毎にC++の規格をいちいち決め直す必要があるなんて、おかしいだろ。
今後新しいファイルシステムが考案される毎に、毎回C++の規格を刷新するつもりか?
例えばWindowsでは同一ドライブに複数のドライブレターを割り当てることが出来るが、
それでどうなるかをC++の規格に定めるべきだと?マジで馬鹿だろ。
というか>>341は明確に間違ってるだろ。色々と。
「ハードリンクガー」なんてのは論外。規格で定めるべき事項ではない。
規格で定めるべきなのは、
・全く同一の中身だが実体が異なる場合でも #pragma once は有効か?
(cp A.h B.h の場合にも B を読み込むか?)
だ。そしてこれは当然現行のインクルードガードと同じ方向に揃えるべきであり、
・読み込んではいけない
という仕様になるのも自明だ。
絶対パスやinodeやハードリンクというのは、
・通常のファイルシステムであれば、絶対パスが同一なら同じファイルを参照する
(=同じ中身であることが保証される)
・inodeでファイルシステムが実装されているのなら、
同じinodeを指すファイル(=ハードリンク)の場合には、同じ実体を参照する
(=同じ中身であることが保証される)
であって、これらは「全く同一の中身」であることを確認する手段でしかない。
これらが有効な環境では間引くのに用いればいいだけ。勿論ハッシュを使ってもいい。
これらが別物に見えるのなら、それは抽象思考が出来ない馬鹿だからだよ。
ファイルシステム毎にC++の規格をいちいち決め直す必要があるなんて、おかしいだろ。
今後新しいファイルシステムが考案される毎に、毎回C++の規格を刷新するつもりか?
例えばWindowsでは同一ドライブに複数のドライブレターを割り当てることが出来るが、
それでどうなるかをC++の規格に定めるべきだと?マジで馬鹿だろ。
356デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 19:29:59.32ID:HtO+dzj70 最終的に規格に定めるのはつまり、
・全く同一の中身の場合には #pragma once は有効
(=現行のincludeガードと同様)
であって、揉めるとしたら、
・意味的には同一だがバイナリ比較では異なる場合
(例:最終行に空白や改行が追加された場合や、コメントのみの変更の場合)
(=現行のincludeガードでは読み込まれないが、単純な方法では同一性の確認が難しい場合)
だが、これも方向としては現行のインクルードガードと合わせる方向、つまり、
・読み込んではいけない
とされるべきであり、これもまた自明だ。
(とはいえここは実装的に揉めるかもしれんが)
そもそも「同一性の確認」をファイルシステムに依存する考え方自体がおかしい。
もうじき #include 対象を url 指定するような時代にもなるだろうし。
(善し悪しはさておき、PHPではこれが出来る)
そうしたら、「同一かどうかは中身で判断する」という選択肢以外はなくなる。
こんな当たり前の話が分からないのは完全に老害化してる。
・全く同一の中身の場合には #pragma once は有効
(=現行のincludeガードと同様)
であって、揉めるとしたら、
・意味的には同一だがバイナリ比較では異なる場合
(例:最終行に空白や改行が追加された場合や、コメントのみの変更の場合)
(=現行のincludeガードでは読み込まれないが、単純な方法では同一性の確認が難しい場合)
だが、これも方向としては現行のインクルードガードと合わせる方向、つまり、
・読み込んではいけない
とされるべきであり、これもまた自明だ。
(とはいえここは実装的に揉めるかもしれんが)
そもそも「同一性の確認」をファイルシステムに依存する考え方自体がおかしい。
もうじき #include 対象を url 指定するような時代にもなるだろうし。
(善し悪しはさておき、PHPではこれが出来る)
そうしたら、「同一かどうかは中身で判断する」という選択肢以外はなくなる。
こんな当たり前の話が分からないのは完全に老害化してる。
357デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 19:30:31.24ID:HtO+dzj70 そしてやる気がないのは今更意味がないからだろ。ほぼ全ての環境で実装済みだ。
> Cray C and C++ 以外では全て実装済み
> https://en.wikipedia.org/wiki/Pragma_once
勿論糞長いパスとかにしたらはまることもあるが、これもよくある話でしかないし、ユーザ責任でいい。
規格に「パスは○○文字まで」と決めるわけにも行かんし。
> 途中でバッサリとパスが切られて、まったく同じシンボル名になって、
> 初めてincludeしたファイルなのにスキップされるという、
> なかなか原因解明が困難な不具合に襲われる……といったケースがあるかもしれません。
> ……はい、体験談です。
> http://cpp.aquariuscode.com/include_guard
> Cray C and C++ 以外では全て実装済み
> https://en.wikipedia.org/wiki/Pragma_once
勿論糞長いパスとかにしたらはまることもあるが、これもよくある話でしかないし、ユーザ責任でいい。
規格に「パスは○○文字まで」と決めるわけにも行かんし。
> 途中でバッサリとパスが切られて、まったく同じシンボル名になって、
> 初めてincludeしたファイルなのにスキップされるという、
> なかなか原因解明が困難な不具合に襲われる……といったケースがあるかもしれません。
> ……はい、体験談です。
> http://cpp.aquariuscode.com/include_guard
358デフォルトの名無しさん (ワッチョイ db9f-x1HS)
2018/04/26(木) 19:39:23.16ID:CbHb+b7U0 二重にインクルードすることを想定しているヘッダーファイルって、存在するものなの?
pragmaとか書かなくても、勝手にやってくれたら問題あるの?
pragmaとか書かなくても、勝手にやってくれたら問題あるの?
359片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/26(木) 19:43:43.54ID:napFR+dZd >>355
要旨が混乱していますね
>例えばWindowsでは同一ドライブに複数のドライブレターを割り当てることが出来る
つまり、今読み込んでいるヘッダファイルがかつて読んだファイルと同じ実体かどうか、を決める方法は**基本的にない**と主張しているのですよね
そう主張するのなら、
>・読み込んではいけない
>という仕様になるのも自明だ。
「読み込んでいいかどうか」を決める方法がないのに「読み込んではいけない」と決めていいのですか?
条件を満たすかどうかチェックする手段がないのに、その条件を仕様とするのは無意味ではないですか?
要旨が混乱していますね
>例えばWindowsでは同一ドライブに複数のドライブレターを割り当てることが出来る
つまり、今読み込んでいるヘッダファイルがかつて読んだファイルと同じ実体かどうか、を決める方法は**基本的にない**と主張しているのですよね
そう主張するのなら、
>・読み込んではいけない
>という仕様になるのも自明だ。
「読み込んでいいかどうか」を決める方法がないのに「読み込んではいけない」と決めていいのですか?
条件を満たすかどうかチェックする手段がないのに、その条件を仕様とするのは無意味ではないですか?
361はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-luqG)
2018/04/26(木) 19:59:02.73ID:P0bCzIha0 >>358
たくさん存在する。
インクルードする前後のマクロ定義によって挙動を切り替えて使うようなものもある。
基本としては宣言というか、別のコンパイル単位にある関数などのインターフェイスを取り込むために使うものなんだけど、
アクロバティックな使い方をしてるものはそれなりに多いよ。
たくさん存在する。
インクルードする前後のマクロ定義によって挙動を切り替えて使うようなものもある。
基本としては宣言というか、別のコンパイル単位にある関数などのインターフェイスを取り込むために使うものなんだけど、
アクロバティックな使い方をしてるものはそれなりに多いよ。
362デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/26(木) 20:06:45.74ID:OZbR3XDf0 プリプロでループを実現するには再帰includeは欠かせないからな
363デフォルトの名無しさん (ワッチョイ db9f-Q5hi)
2018/04/26(木) 20:08:29.05ID:CbHb+b7U0364デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 20:24:45.91ID:HtO+dzj70365デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:34:58.75ID:JC9sZU4oa int lengthOfLcs_r(const char x[], const char y[], int ix, int iy, int xsize, int ysize) {
static int **lengthTable = new int*[xsize];
for (int i = 0; i < xsize; ++i) {
lengthTable[i] = new int[ysize];
}
if (ix == xsize || iy == ysize) {
return 0;
}
if (x[ix] == y[iy]) {
return lengthOfLcs_r(x, y, ix + 1, iy + 1, xsize, ysize) + 1;
}
return max(lengthOfLcs_r(x, y, ix, iy + 1, xsize, ysize), lengthOfLcs_r(x, y, ix + 1, iy, xsize, ysize));
}
static int **lengthTable = new int*[xsize];
for (int i = 0; i < xsize; ++i) {
lengthTable[i] = new int[ysize];
}
if (ix == xsize || iy == ysize) {
return 0;
}
if (x[ix] == y[iy]) {
return lengthOfLcs_r(x, y, ix + 1, iy + 1, xsize, ysize) + 1;
}
return max(lengthOfLcs_r(x, y, ix, iy + 1, xsize, ysize), lengthOfLcs_r(x, y, ix + 1, iy, xsize, ysize));
}
366デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/26(木) 20:36:08.64ID:OZbR3XDf0 #include "/dev/tty" も知らない雑魚はもう黙ってろよ
367デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:37:18.41ID:JC9sZU4oa >>365
の関数は、再帰的な関数です。
その再帰的な関数内で static な配列を利用したいのですが、動的に確保した
領域を解放するにはどうすればいいのでしょうか?
再帰的な関数なので単純に関数の最後で解放するというわけにはいかないので
困っています。
の関数は、再帰的な関数です。
その再帰的な関数内で static な配列を利用したいのですが、動的に確保した
領域を解放するにはどうすればいいのでしょうか?
再帰的な関数なので単純に関数の最後で解放するというわけにはいかないので
困っています。
368デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:39:18.48ID:JC9sZU4oa >>364
わけて考えてみますね
インクルードガードはプリプロセッサ名前空間内の一つのプリプロ識別子を犠牲にして、機能させようとしているわけですよね
#progma once が犠牲にする**べき**ものは何でしょうか?
わけて考えてみますね
インクルードガードはプリプロセッサ名前空間内の一つのプリプロ識別子を犠牲にして、機能させようとしているわけですよね
#progma once が犠牲にする**べき**ものは何でしょうか?
370デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:40:15.50ID:JC9sZU4oa371デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/26(木) 20:43:55.37ID:OZbR3XDf0 >>>365
lengthTableのポインタ値をなんとかしてグローバル変数に持ち出してatexitに登録するか
最初からそのグローバル変数でnewするか
どうせプログラム終了時にヒープ丸ごと消えるんだから放置するか
一から書き直すかの4択
lengthTableのポインタ値をなんとかしてグローバル変数に持ち出してatexitに登録するか
最初からそのグローバル変数でnewするか
どうせプログラム終了時にヒープ丸ごと消えるんだから放置するか
一から書き直すかの4択
372デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:45:16.69ID:JC9sZU4oa373デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:53:11.22ID:JC9sZU4oa >>371
ありがとうございました。
すみません。質問がちょっとおかしかったので、質問を代えさせていただきます。
ある特定の関数内でしか見えないグローバル変数のような変数というのはC++にありますか?
考えているのは、関数 func でそのグローバル変数のような変数 a を宣言する。
func 内で呼び出している再帰関数 rec_func 内でのみそのグローバル変数のような
変数 a を利用したい。グローバル変数のような変数なので、 rec_func の引数として
a を渡す必要はない。
ありがとうございました。
すみません。質問がちょっとおかしかったので、質問を代えさせていただきます。
ある特定の関数内でしか見えないグローバル変数のような変数というのはC++にありますか?
考えているのは、関数 func でそのグローバル変数のような変数 a を宣言する。
func 内で呼び出している再帰関数 rec_func 内でのみそのグローバル変数のような
変数 a を利用したい。グローバル変数のような変数なので、 rec_func の引数として
a を渡す必要はない。
374デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 20:57:03.80ID:JC9sZU4oa 何度も呼び出される再帰関数に引数として同じ変数を渡し続けるのはなんか
無駄なことをしているように思われたので質問しました。
本を読むとグローバル変数は使うなと書いてあるので質問しました。
無駄なことをしているように思われたので質問しました。
本を読むとグローバル変数は使うなと書いてあるので質問しました。
375デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 21:01:32.17ID:JC9sZU4oa376デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 21:03:04.18ID:JC9sZU4oa でも、そのためだけにクラスを作るというのもなんだかな―という感じがします。
377デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 21:06:11.37ID:HtO+dzj70 >>360
一応添削しておくと、
> 今読み込んでいるヘッダファイルがかつて読んだファイルと同じ実体かどうか、を決める方法は**基本的にない**
× 同じ実体かどうか、を決める方法は
○ 同じ実体かどうか、をパス等で決める方法は
ただし俺はそもそも「中身」を見て確認すべきで、同じ実体だったら云々、という話はしてない。
cp A.h B.h の場合にインクルードガードでBを弾くとして、
当然Bは「ファイルとしては」「読み込まれ」、「コンパイル対象としては」「読み込まれない」だろ。
#pragma once はインクルードガードの自動版なんだから、インクルードガードと同じ仕様でいいんだよ。
そして逆に、実体が異なっていてもこの場合はインクルードガードは利くのだから、#pragma once も利くべきなんだよ。
ファイルパスでの識別ではこれは実現不可能だろ。
>>369
意味不明。何も犠牲にするべき物は無いと思うが。
というかな、規格化するなら方向は自明で、
・#pragma once はインクルードガードの代わりに使われているのだから、
現行のインクルードガードを機械的に #pragma once に置き換えして問題ないように仕様化すべき
でしかないだろ。これで誰も文句ないと思うが。
一応添削しておくと、
> 今読み込んでいるヘッダファイルがかつて読んだファイルと同じ実体かどうか、を決める方法は**基本的にない**
× 同じ実体かどうか、を決める方法は
○ 同じ実体かどうか、をパス等で決める方法は
ただし俺はそもそも「中身」を見て確認すべきで、同じ実体だったら云々、という話はしてない。
cp A.h B.h の場合にインクルードガードでBを弾くとして、
当然Bは「ファイルとしては」「読み込まれ」、「コンパイル対象としては」「読み込まれない」だろ。
#pragma once はインクルードガードの自動版なんだから、インクルードガードと同じ仕様でいいんだよ。
そして逆に、実体が異なっていてもこの場合はインクルードガードは利くのだから、#pragma once も利くべきなんだよ。
ファイルパスでの識別ではこれは実現不可能だろ。
>>369
意味不明。何も犠牲にするべき物は無いと思うが。
というかな、規格化するなら方向は自明で、
・#pragma once はインクルードガードの代わりに使われているのだから、
現行のインクルードガードを機械的に #pragma once に置き換えして問題ないように仕様化すべき
でしかないだろ。これで誰も文句ないと思うが。
378デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/26(木) 21:07:21.99ID:OZbR3XDf0379デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 21:07:30.49ID:JC9sZU4oa クラスを作ってそのプライベートなメンバ変数を、
ある関数内でのみ利用できるグローバル変数の
ような変数として使うというのは邪道でしょうか?
ある関数内でのみ利用できるグローバル変数の
ような変数として使うというのは邪道でしょうか?
380デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/04/26(木) 21:08:37.69ID:JC9sZU4oa381デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 21:51:10.65ID:HtO+dzj70 >>373
> ある特定の関数内でしか見えないグローバル変数のような変数というのはC++にありますか?
見た目だけの話ならラムダでキャプチャすればいい。(クロージャ)
ただ、今気づいたが、C++のラムダって名前付けられないから再帰できないね。
変数の直接呼び出しも試してみたが、以下は通らない。
auto f = [](int x) {return x? x+f(x-1) : x;};
なんでこんな糞仕様にしたんだ?
JavaScriptも当初はそうだったが、不便だったので名前が付けられるように変更した。
この変更を知ってて無視してるのなら頭おかしいし、
知らないのなら不勉強だし。(言語仕様に携わる奴は他言語の動向も見ておくべき)
名前を付けられて悪いことはないし、技術的に不可能って事も無いと思うが。
> ある特定の関数内でしか見えないグローバル変数のような変数というのはC++にありますか?
見た目だけの話ならラムダでキャプチャすればいい。(クロージャ)
ただ、今気づいたが、C++のラムダって名前付けられないから再帰できないね。
変数の直接呼び出しも試してみたが、以下は通らない。
auto f = [](int x) {return x? x+f(x-1) : x;};
なんでこんな糞仕様にしたんだ?
JavaScriptも当初はそうだったが、不便だったので名前が付けられるように変更した。
この変更を知ってて無視してるのなら頭おかしいし、
知らないのなら不勉強だし。(言語仕様に携わる奴は他言語の動向も見ておくべき)
名前を付けられて悪いことはないし、技術的に不可能って事も無いと思うが。
382デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 22:07:02.86ID:IAeApo/t0 ID:4xU9Va0kM=ID:HtO+dzj70
#include "X:\sandbox\aho.h"
#include "Y:\sandbox\aho.h"
これでどうなるかをC++の規格に定めるべきだと言っているのはおまえだけ
//X:\sandbox\some_app.cpp
#include "aho.h"
#include "some_lib.h"
//Y:\sandbox\some_lib.h
#include "aho.h"
おまえq文字列の解釈をまさか知らんのか?
#include "X:\sandbox\aho.h"
#include "Y:\sandbox\aho.h"
これでどうなるかをC++の規格に定めるべきだと言っているのはおまえだけ
//X:\sandbox\some_app.cpp
#include "aho.h"
#include "some_lib.h"
//Y:\sandbox\some_lib.h
#include "aho.h"
おまえq文字列の解釈をまさか知らんのか?
383デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 22:34:27.88ID:4xU9Va0kM384デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 22:35:24.34ID:IAeApo/t0 >>383
全文そのまま返すわ
全文そのまま返すわ
385デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/26(木) 22:41:09.16ID:EM3O7qLA0 同じファイル
同じ中身
大きく分けて2種類あり、
それぞれ、同じの定義の詳細は色々と考えられる
同じ中身
大きく分けて2種類あり、
それぞれ、同じの定義の詳細は色々と考えられる
386デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 22:45:45.22ID:4xU9Va0kM387デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/26(木) 22:46:56.42ID:4xU9Va0kM >>384
人を嘘つき呼ばわりして謝ることもできない奴がなに言ってるんだよ w
人を嘘つき呼ばわりして謝ることもできない奴がなに言ってるんだよ w
388デフォルトの名無しさん (ワッチョイ 1961-luqG)
2018/04/26(木) 23:09:17.34ID:IAeApo/t0 効いてる効いてるw
嘘つき呼ばわりじゃなく嘘つきという真実を指摘されてファビョーンかよ
おまえは考察自体を放棄した
この事実はどうにもならない
嘘つき呼ばわりじゃなく嘘つきという真実を指摘されてファビョーンかよ
おまえは考察自体を放棄した
この事実はどうにもならない
389デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/26(木) 23:12:02.64ID:HtO+dzj70390デフォルトの名無しさん (ワッチョイ 5b7f-jvcw)
2018/04/26(木) 23:58:27.23ID:DklDUzVR0 またいつもの奴が暴れてるのか
相変わらず不毛な話してるな
相変わらず不毛な話してるな
391デフォルトの名無しさん (ワッチョイ 5b7f-jvcw)
2018/04/26(木) 23:59:44.22ID:DklDUzVR0 それで結局#pragma onceが採用されてこなかった理由はなんなん?
392デフォルトの名無しさん (ワッチョイ 9334-WSc7)
2018/04/27(金) 00:09:03.41ID:vLs/1v3E0 所詮 pragma だから
この部分は処理系依存が強く出るので
この部分は処理系依存が強く出るので
393デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/27(金) 00:18:29.43ID:nldsEJyI0394デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/27(金) 00:25:32.85ID:ledFfOHm0 https://stackoverflow.com/questions/23696115/is-pragma-once-part-of-the-c11-standard
https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/YG76sfDJ4f8
http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0538r0.html
#pragma onceについて語りたい奴は必ず先に目を通すように
じゃないと上で騒いでる馬鹿みたいになっちゃうからな
https://groups.google.com/a/isocpp.org/forum/#!topic/std-discussion/YG76sfDJ4f8
http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0538r0.html
#pragma onceについて語りたい奴は必ず先に目を通すように
じゃないと上で騒いでる馬鹿みたいになっちゃうからな
395デフォルトの名無しさん
2018/04/27(金) 06:18:50.95 MSアレルギー
396デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/27(金) 06:26:34.10ID:mlVlMuXl0397デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/27(金) 06:41:55.40ID:O6TOHWbPM まともに反論できないことはよくわかったよ w
事実を書いてあるだけで思考過程なんて関係ない
事実を書いてあるだけで思考過程なんて関係ない
398デフォルトの名無しさん (ブーイモ MM85-MzrX)
2018/04/27(金) 06:51:10.76ID:fIiVOejaM 天啓が下ったぞ!
399デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/27(金) 07:38:07.75ID:ledFfOHm0 事実ってなんだよ
「アホは切り捨てろ!」とかいう標準規格として最低最悪の解決策を取れっていうのはお前のクソみたいな「意見」だろうが
お前の意見は必ず自動的に実現して事実になるの?神なの?
「アホは切り捨てろ!」とかいう標準規格として最低最悪の解決策を取れっていうのはお前のクソみたいな「意見」だろうが
お前の意見は必ず自動的に実現して事実になるの?神なの?
400デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/27(金) 08:05:14.16ID:O6TOHWbPM そういう意見を書いてあると言う「事実」な
マジで理解力無さすぎ w
マジで理解力無さすぎ w
401デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/27(金) 10:03:10.93ID:mlVlMuXl0402デフォルトの名無しさん (スッップ Sdb3-UHm4)
2018/04/27(金) 10:58:06.07ID:COWnkDW0d403デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/27(金) 12:28:04.63ID:O6TOHWbPM404デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/27(金) 12:30:27.46ID:Mg+ERRyAd いつまでやるの?
405デフォルトの名無しさん (スッップ Sdb3-UHm4)
2018/04/27(金) 12:42:19.37ID:COWnkDW0d C/C++の規格はgets()とかいうアホな使い方しか出来ないアホ関数を30年も削除出来なかったくらいアホに気長に付き合う規格なんだよ
広く使われ続ける規格の宿命としてその方針は変えられない
だからお前の言うようなアホを無視して切り捨てるという選択肢が採用されることはないという事でこの話終わりな
広く使われ続ける規格の宿命としてその方針は変えられない
だからお前の言うようなアホを無視して切り捨てるという選択肢が採用されることはないという事でこの話終わりな
406デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/27(金) 14:52:44.93ID:mlVlMuXl0 >>403
もう一度言う
提示してねえだろ、おまえは無視つったんだよ
人をアホよばわりしようと焦るあまり
論議そのものを粗末に扱ったのが
おまえの運の尽きだ
そこでどんなに暴れようが
おまえは何も論じていない
よって論に反駁してもらえることもない
ましてや事実に反駁というシュールなことをする者もいない
もう一度言う
提示してねえだろ、おまえは無視つったんだよ
人をアホよばわりしようと焦るあまり
論議そのものを粗末に扱ったのが
おまえの運の尽きだ
そこでどんなに暴れようが
おまえは何も論じていない
よって論に反駁してもらえることもない
ましてや事実に反駁というシュールなことをする者もいない
407デフォルトの名無しさん (ワッチョイ b37e-aD0S)
2018/04/27(金) 16:36:21.86ID:j5Ya8YmN0 アホではないから残しているのでは
408デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/27(金) 18:27:57.39ID:O6TOHWbPM409850 (オッペケ Sr0d-OwZ7)
2018/04/27(金) 18:31:51.94ID:Q1GjkYeyr410デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/04/27(金) 18:33:12.92ID:O6TOHWbPM411デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/27(金) 19:01:47.01ID:mlVlMuXl0412デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/27(金) 20:31:10.54ID:nldsEJyI0 はい、基地害乙
413片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdb3-L0fA)
2018/04/27(金) 20:33:29.96ID:HF3+Vuoyd りかいできないならからんでくるなよダブリュー
「アホなりようしゃはあいてにしない(イコールむしする)」っていうしようを「ていじ」してるってはなしだ、ボケ
「アホなりようしゃはあいてにしない(イコールむしする)」っていうしようを「ていじ」してるってはなしだ、ボケ
414デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/27(金) 20:46:16.80ID:mctUhDKod よくわからんが、糞コテの自演てこと?
415デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/27(金) 23:50:18.78ID:mp1hh4hd0 C/C++は池沼お断りの言語なんだから、このスレも同じノリでいいと思うぞ。
指摘しても理解できないのは、日本語が出来ない=池沼だから。
慣れる慣れない以前の問題だ。
指摘しても理解できないのは、日本語が出来ない=池沼だから。
慣れる慣れない以前の問題だ。
416デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 06:20:59.27ID:BHnoJcFn0 ていうか#pragma once規格化不能論者が言い立てる不可能ケースは
(1) #ifdef〜#endifインクル〜ドガ〜ドでも曖昧さが残り処理系依存になるケース
(2) #pragma onceで自動的にガード条件を設定する際の困難(#ifdef 〜の記号をうまい具合に考え出すことに相当
(3) #ifdef〜#endifインクル〜ドガ〜ドにおける既存のアクロバティックな使い方への対応(>>361
(4) #pragma onceで想定されるアクロバティックな使い方の解釈(>>321
のn種類しかない
(1)は#pragma once固有の問題ではないから、#pragma once規格化の障害とは言えない ハードリンクとかの件でここまで費やされた長い紙数はムダすぐる…
(2)と(3)は、#pragma onceが力量不足ならそのケースだけいつでも#ifdef〜#endifインクル〜ドガ〜ドに戻ることができる プリプロセッサの基本特性まで変えようというのではないのだから…
(4)はエラーにすればよい #pragma onceの解釈を単純な#ifdef〜#endifインクル〜ドガ〜ドの置き換えと限定するなら可能なはずや
いままで20数年にわたって規格化委員会で話題に上りながら規格化されないのは、
この件の抜本的な技術である「モジュール」の規格化が控えていると全員が錯誤していること、これにつきるだろうJK
(1) #ifdef〜#endifインクル〜ドガ〜ドでも曖昧さが残り処理系依存になるケース
(2) #pragma onceで自動的にガード条件を設定する際の困難(#ifdef 〜の記号をうまい具合に考え出すことに相当
(3) #ifdef〜#endifインクル〜ドガ〜ドにおける既存のアクロバティックな使い方への対応(>>361
(4) #pragma onceで想定されるアクロバティックな使い方の解釈(>>321
のn種類しかない
(1)は#pragma once固有の問題ではないから、#pragma once規格化の障害とは言えない ハードリンクとかの件でここまで費やされた長い紙数はムダすぐる…
(2)と(3)は、#pragma onceが力量不足ならそのケースだけいつでも#ifdef〜#endifインクル〜ドガ〜ドに戻ることができる プリプロセッサの基本特性まで変えようというのではないのだから…
(4)はエラーにすればよい #pragma onceの解釈を単純な#ifdef〜#endifインクル〜ドガ〜ドの置き換えと限定するなら可能なはずや
いままで20数年にわたって規格化委員会で話題に上りながら規格化されないのは、
この件の抜本的な技術である「モジュール」の規格化が控えていると全員が錯誤していること、これにつきるだろうJK
417デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 06:57:19.27ID:ibkTuaSK0418デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 07:52:46.94ID:BHnoJcFn0 ■ #pragma onceの俺様仕様
(ヘッダファイルの集合の規定)
1. インクルードされるヘッダファイルを#pragma once付きとそれ以外とする。
ただし、次のいずれかに該当する場合はエラーとする(ヘッダファイルに含めない)
(1) #pragma onceがコメントを除くファイル先頭に現れた場合
(2) #pragma onceがコメントを除くファイル先頭に現れ、かつ
ファイル内の#if〜#endifの入れ子がファイル内で完結しない
(ヘッダファイルの識別)
2. #pragma once付きのヘッダファイル同士は、ファイル名で識別する。(ディレクトリパスは無視)
(ヘッダファイルの展開)
3. #pragma once付きのヘッダファイルのうち、上記2の規則により同一と判定されるファイルは
単一のコンパイルの中で、2回目以降の展開を無視する。
4. #pragma once付きでないヘッダファイルの展開は現行どおりとする。
いじょ
(ヘッダファイルの集合の規定)
1. インクルードされるヘッダファイルを#pragma once付きとそれ以外とする。
ただし、次のいずれかに該当する場合はエラーとする(ヘッダファイルに含めない)
(1) #pragma onceがコメントを除くファイル先頭に現れた場合
(2) #pragma onceがコメントを除くファイル先頭に現れ、かつ
ファイル内の#if〜#endifの入れ子がファイル内で完結しない
(ヘッダファイルの識別)
2. #pragma once付きのヘッダファイル同士は、ファイル名で識別する。(ディレクトリパスは無視)
(ヘッダファイルの展開)
3. #pragma once付きのヘッダファイルのうち、上記2の規則により同一と判定されるファイルは
単一のコンパイルの中で、2回目以降の展開を無視する。
4. #pragma once付きでないヘッダファイルの展開は現行どおりとする。
いじょ
419デフォルトの名無しさん
2018/04/28(土) 07:55:01.29420デフォルトの名無しさん (ブーイモ MMf5-EDrg)
2018/04/28(土) 07:56:19.92ID:zm4OWgENM ソフトウェアが巨大化してくると、サブモジュールが各々同一のSDKを抱えてるなんてことがある。
複数のサブモジュールを読み込んでるソースコードは間接的に同一ヘッダを読み込む可能性があるが、
cvs等が異なるidを埋め込んでいたり、それぞれ微妙にバージョンが異なっていたり、エンコーディングや改行コードが異なっていたりする場合、
Includeガードならビルドできるが、pragma onceだと同一ヘッダを異なるファイルと認識してしまい、エラーになってしまったので、サブモジュールを全て自前で修正する羽目になった。
なんてことがあるかもしれない。
結局ヒューリスティックな実装しかないんでないの?
複数のサブモジュールを読み込んでるソースコードは間接的に同一ヘッダを読み込む可能性があるが、
cvs等が異なるidを埋め込んでいたり、それぞれ微妙にバージョンが異なっていたり、エンコーディングや改行コードが異なっていたりする場合、
Includeガードならビルドできるが、pragma onceだと同一ヘッダを異なるファイルと認識してしまい、エラーになってしまったので、サブモジュールを全て自前で修正する羽目になった。
なんてことがあるかもしれない。
結局ヒューリスティックな実装しかないんでないの?
421デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 07:57:50.65ID:BHnoJcFn0 訂正;
誤: (1) #pragma onceがコメントを除くファイル先頭に現れた場合
正: (1) #pragma onceがコメントを除くファイル先頭以外に現れた場合
誤: (1) #pragma onceがコメントを除くファイル先頭に現れた場合
正: (1) #pragma onceがコメントを除くファイル先頭以外に現れた場合
422デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 07:58:55.91ID:BHnoJcFn0423デフォルトの名無しさん (ブーイモ MMf5-EDrg)
2018/04/28(土) 08:04:07.12ID:zm4OWgENM424デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 08:05:18.62ID:BHnoJcFn0425デフォルトの名無しさん (ブーイモ MMf5-EDrg)
2018/04/28(土) 08:15:15.14ID:zm4OWgENM 今後ヘッダファイル名にはドメイン名を頭につけなきゃいけないね。
メアドでもいいかな?
メアドでもいいかな?
426デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 08:20:58.21ID:amQJLuCm0427デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/28(土) 08:24:01.11ID:WRqkde3l0428デフォルトの名無しさん
2018/04/28(土) 08:33:55.15429デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/28(土) 09:13:26.88ID:clK1o5V+0 つまりfooSDK/interface.hとbarSDK/interface.hは同一として判定するんだな
たいへんだー
たいへんだー
430デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/28(土) 09:22:50.78ID:WRqkde3l0 結論を急ぐあまり考察が浅くなりすぎだな
431デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 09:23:37.16ID:ibkTuaSK0 #pragma onceの前に改行があったらエラーですかwww
432デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 09:27:57.75ID:amQJLuCm0433デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/28(土) 09:34:33.18ID:WRqkde3l0434デフォルトの名無しさん (ブーイモ MMf5-EDrg)
2018/04/28(土) 09:42:57.08ID:zm4OWgENM435デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 09:45:12.10ID:ibkTuaSK0 まずは世の中のプリプロセッサのpragma onceの仕様がどうなっているかを調べるべきかと
436デフォルトの名無しさん (ワッチョイ 2be8-A9Qv)
2018/04/28(土) 09:54:13.99ID:EXYGb8MJ0 具体的な話になったら一気にレベル下がったなw
437デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 10:21:03.59ID:amQJLuCm0438デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 10:24:05.76ID:ibkTuaSK0 目的は
インクルードのループを防ぎたいのと
同じ定義を複数回行うことでエラーになるのを防ぎたい
ってことだよな
これをインテリジェントに行ってくれるのが理想
インテリジェントな物を仕様にするのは難しいし、
時代が進めばインテリジェント具合も変わる
>>418みたいなあまりにショボい仕様だと
後々不満が出ることになる
インクルードのループを防ぎたいのと
同じ定義を複数回行うことでエラーになるのを防ぎたい
ってことだよな
これをインテリジェントに行ってくれるのが理想
インテリジェントな物を仕様にするのは難しいし、
時代が進めばインテリジェント具合も変わる
>>418みたいなあまりにショボい仕様だと
後々不満が出ることになる
439デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/28(土) 10:28:01.67ID:WRqkde3l0440デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 10:28:57.76ID:BHnoJcFn0 >>429
>>434
現行のヘッダファイルでうまく行っているのならそのままでええ(>>418項番4はそのためにある
そうではなくて、もしも(例えば)マイクロソフトのVisual C++の#pragma onceを使って書かれた過去の遺産の尊重が大事なら
そのときは>>418の方の#pragma onceを#pragma once2とかに代えれば良いが
そりゃー(例えば)マイクロソフトのVisual C++の#pragma onceが先行して規格になった後の話なので今は無視
>>435
>417からの流れと考え合わせるに、
「僕ちゃんの考えた理想の#pragma onceじゃないと嫌なの!!!>418のクソ単純な仕様は正しくとも認められん!!!」ってことですかそうですか…
なお>>431の指摘は評価する
>>436
抽象的な言い回しで無意味に高尚な議論に見せかけている連中の方が多数派
空っぽなのに…
>>434
現行のヘッダファイルでうまく行っているのならそのままでええ(>>418項番4はそのためにある
そうではなくて、もしも(例えば)マイクロソフトのVisual C++の#pragma onceを使って書かれた過去の遺産の尊重が大事なら
そのときは>>418の方の#pragma onceを#pragma once2とかに代えれば良いが
そりゃー(例えば)マイクロソフトのVisual C++の#pragma onceが先行して規格になった後の話なので今は無視
>>435
>417からの流れと考え合わせるに、
「僕ちゃんの考えた理想の#pragma onceじゃないと嫌なの!!!>418のクソ単純な仕様は正しくとも認められん!!!」ってことですかそうですか…
なお>>431の指摘は評価する
>>436
抽象的な言い回しで無意味に高尚な議論に見せかけている連中の方が多数派
空っぽなのに…
441デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 10:29:34.95ID:ibkTuaSK0442デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 10:33:35.22ID:BHnoJcFn0443デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 10:33:47.48ID:ibkTuaSK0 >>429の例で
2重インクルードを防ぎたい場合とそれぞれ別にインクルードしたい場合があるってのは書かなくてもわかるよな
中身が全く同じであれば防ぎたいし
全く別の定義であればそれそれぞれをインクルードしたい
2重インクルードを防ぎたい場合とそれぞれ別にインクルードしたい場合があるってのは書かなくてもわかるよな
中身が全く同じであれば防ぎたいし
全く別の定義であればそれそれぞれをインクルードしたい
444デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 10:35:03.59ID:ibkTuaSK0 >>442
#pragma onceの仕様はVisual C++しか実装してないと思ってる?
#pragma onceの仕様はVisual C++しか実装してないと思ってる?
445デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/28(土) 10:38:47.00ID:BHnoJcFn0446デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/04/28(土) 10:42:05.24ID:ibkTuaSK0 いずれにしろ>>418みたいなチープな仕様じゃ誰にも支持されない
447デフォルトの名無しさん (ワッチョイ d3c3-luqG)
2018/04/28(土) 10:45:00.58ID:WRqkde3l0 ツッコミ殺到でボコボコなのに勝利宣言してやがるな
つっこんだ人たち(ここのほぼ全員)にバレバレなのに滑稽な
つっこんだ人たち(ここのほぼ全員)にバレバレなのに滑稽な
448デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 11:10:27.31ID:ueAKslGb0 >>418,421はミニマムの仕様を提示しただけで、つまり、
この仕様で問題ない場合は #pragma once で手抜きが出来て、
無理な場合は従来通りインクルードガード使えってことだろ。
俺はありだと思うぜ。仕様ってのはこういう割り切り方をしないと決まらない。
C++のラムダなんて後付で仕様を拡張して行っているし。(このやり方がいいとは思わないが)
ただ、この仕様だと現行の #pragma once よりも割り切っているのがイマイチで、
「今」この仕様では却下されるだろう。
「#pragma once が全くない世界」なら、とりあえずここから出発するのもありだっただろう。
現行の #pragma once は常識的に考えて、
・ファイル実体が同じ場合(ハードリンク/シンボリックリンク)は対応可能
・コピーの場合(ローカルに xxx.h を tmp_xxx.h にしてデバッグ出力を改変したり)には対応不能
だろう。だから使用条件としては、
・全ファイルがローカルファイルシステム上にあり、ヘッダファイルの改変は行わない
であり、普通に個人レベルで開発する場合はこれで全く問題ないし、妥当だ。
会社で10-20人レベルで開発する場合、どのみちルールを子細に決めることになるし、
そういう場合は従来のインクルードガードでやれ、という割り切りも妥当だよ。
この仕様で問題ない場合は #pragma once で手抜きが出来て、
無理な場合は従来通りインクルードガード使えってことだろ。
俺はありだと思うぜ。仕様ってのはこういう割り切り方をしないと決まらない。
C++のラムダなんて後付で仕様を拡張して行っているし。(このやり方がいいとは思わないが)
ただ、この仕様だと現行の #pragma once よりも割り切っているのがイマイチで、
「今」この仕様では却下されるだろう。
「#pragma once が全くない世界」なら、とりあえずここから出発するのもありだっただろう。
現行の #pragma once は常識的に考えて、
・ファイル実体が同じ場合(ハードリンク/シンボリックリンク)は対応可能
・コピーの場合(ローカルに xxx.h を tmp_xxx.h にしてデバッグ出力を改変したり)には対応不能
だろう。だから使用条件としては、
・全ファイルがローカルファイルシステム上にあり、ヘッダファイルの改変は行わない
であり、普通に個人レベルで開発する場合はこれで全く問題ないし、妥当だ。
会社で10-20人レベルで開発する場合、どのみちルールを子細に決めることになるし、
そういう場合は従来のインクルードガードでやれ、という割り切りも妥当だよ。
449デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 11:11:35.35ID:ueAKslGb0 なお俺が推す仕様は、
・#pragma once のファイル内では複数定義のエラーを無視する
というものだ。従って、
・現行の#pragma once とは違い、対象ファイルは必ず「ファイルとしては」「読み込まれる」
(これは現行のインクルードガードとも同じ)
・定義されている物のシグネチャが既に存在するものと全く同一だった場合、無視する。
・シグネチャが異なっている場合、普通に読み込む(コンパイル対象とする)
(勝手にデバッグ関数を追加されていた場合、その関数だけはコンパイルされる)
・#pragma once のファイルを全部パースし終わった際、「全部重複」「全部新規」ではなかった場合、警告を出す。
(正しく使えば「全部重複」「全部新規」のどちらかになる。
改変《追加》した場合は「一部新規」となり、警告にする。「一部欠落」は検知しない。)
というものだ。
この場合、要するに「読み込んで同じだったら無視」なので、
#ifdef 内等、かなりアクロバティックに使われても、問題なく、使用者の直感通りに動作する。
改行の追加、コメント変更等は全く問題ない。
ただし常に全部のファイルを読み込み、初段階のパースは行うことになるので、
現行の #pragma once やインクルードガードよりは速度は劣る。
とはいえ、今更ここが問題になる時代ではないし、問題になるようならインクルードガードを使えと割り切る。
つまり、面倒なら #include を使わずに、全部 #pragma once にも出来る、というもので、
実際これで問題無いと思うんだがな。
・#pragma once のファイル内では複数定義のエラーを無視する
というものだ。従って、
・現行の#pragma once とは違い、対象ファイルは必ず「ファイルとしては」「読み込まれる」
(これは現行のインクルードガードとも同じ)
・定義されている物のシグネチャが既に存在するものと全く同一だった場合、無視する。
・シグネチャが異なっている場合、普通に読み込む(コンパイル対象とする)
(勝手にデバッグ関数を追加されていた場合、その関数だけはコンパイルされる)
・#pragma once のファイルを全部パースし終わった際、「全部重複」「全部新規」ではなかった場合、警告を出す。
(正しく使えば「全部重複」「全部新規」のどちらかになる。
改変《追加》した場合は「一部新規」となり、警告にする。「一部欠落」は検知しない。)
というものだ。
この場合、要するに「読み込んで同じだったら無視」なので、
#ifdef 内等、かなりアクロバティックに使われても、問題なく、使用者の直感通りに動作する。
改行の追加、コメント変更等は全く問題ない。
ただし常に全部のファイルを読み込み、初段階のパースは行うことになるので、
現行の #pragma once やインクルードガードよりは速度は劣る。
とはいえ、今更ここが問題になる時代ではないし、問題になるようならインクルードガードを使えと割り切る。
つまり、面倒なら #include を使わずに、全部 #pragma once にも出来る、というもので、
実際これで問題無いと思うんだがな。
450デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 11:15:31.75ID:aIENMcPWd もう書かなくて良いよ
アホだってこはみんなわかったから
アホだってこはみんなわかったから
451デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 11:18:31.52ID:aIENMcPWd ヒント
インクルードループ
インクルードループ
452デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 11:22:35.75ID:aIENMcPWd インクルードのネストがn段
それぞれの段、m個のインクルードファイルからm個インクルードしてるとします
何パス必要でしょう
それぞれの段、m個のインクルードファイルからm個インクルードしてるとします
何パス必要でしょう
453デフォルトの名無しさん (ワッチョイ d9f2-luqG)
2018/04/28(土) 12:14:39.04ID:wZlaoeXA0 >(ディレクトリパスは無視)
現行の#pragma onceでこんな実装になってる処理系あるかなぁ
現行の#pragma onceでこんな実装になってる処理系あるかなぁ
454デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 12:22:28.92ID:amQJLuCm0 >>439
日本語で桶
日本語で桶
455デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 12:24:23.32ID:amQJLuCm0456デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 12:26:40.87ID:aIENMcPWd 具体的にたくさんあがってるのが見えないのかな
457デフォルトの名無しさん (ワッチョイ c1b3-luqG)
2018/04/28(土) 12:51:19.85ID:NasUyYi90 プリプロセッサが諸悪の根源
458デフォルトの名無しさん (ワッチョイ c1b3-luqG)
2018/04/28(土) 12:51:48.61ID:NasUyYi90 #define多いと読む気しない
459デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/04/28(土) 13:09:32.49ID:amQJLuCm0 >>456
レス番も引用もできないクズ乙 w
レス番も引用もできないクズ乙 w
460デフォルトの名無しさん (ワッチョイ 9391-/P+7)
2018/04/28(土) 14:18:44.28ID:0IOpQOT30 static変数(クラスのインスタンス)がプログラム実行時にそのメンバ関数呼び出し時にその中で、
newをすると既存のヒープ領域を破壊することはありますか?
どうもこのように解釈できる現象が起きているようなのですが、調べても分からずアドバイスを頂ければ幸いです。
環境はMacのHighSierra、コンパイラはbrewから持ってきたLLVMです。
newをすると既存のヒープ領域を破壊することはありますか?
どうもこのように解釈できる現象が起きているようなのですが、調べても分からずアドバイスを頂ければ幸いです。
環境はMacのHighSierra、コンパイラはbrewから持ってきたLLVMです。
461デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 16:33:32.77ID:ueAKslGb0462デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 16:51:34.89ID:ueAKslGb0 ああすまん、何となく1行目の意味は分かった。
・クラスインスタンスをstatic変数に入れ、そのメソッドを呼んだ
事をそう表現したのかな?
だったらはっきり言ってstatic云々関係ない。
GCなんて無いから「statc変数に入れたら忘れてGCされてしまう」みたいなことはそもそも無い。
ヒープを壊しているのはユーザーです。つーか、ランタイムもないし。
ガチでコンパイラのバグだと思っているのなら、
どのみち再現コード(その場合は20行程度か)を作るしかない。
その過程で君のバグだと気づけるだろうさ。
ただこのように「下から」デバッグをするのは時間がかかるから、俺は嫌いだけど、
君がそう思うのならやるしかない。
C/C++は広く長く使われて来ている言語だから、
現在もバリバリに使われているコンパイラなら、この辺の基本的な部分にバグは無いと思うよ。
static変数に確保するのはマイナーかもしれないが、滅多にやらないってほどではないし、
そもそも上記の通り、コンパイラにとって危険のある(バグに命中する可能性のある)使い方でもない。
・クラスインスタンスをstatic変数に入れ、そのメソッドを呼んだ
事をそう表現したのかな?
だったらはっきり言ってstatic云々関係ない。
GCなんて無いから「statc変数に入れたら忘れてGCされてしまう」みたいなことはそもそも無い。
ヒープを壊しているのはユーザーです。つーか、ランタイムもないし。
ガチでコンパイラのバグだと思っているのなら、
どのみち再現コード(その場合は20行程度か)を作るしかない。
その過程で君のバグだと気づけるだろうさ。
ただこのように「下から」デバッグをするのは時間がかかるから、俺は嫌いだけど、
君がそう思うのならやるしかない。
C/C++は広く長く使われて来ている言語だから、
現在もバリバリに使われているコンパイラなら、この辺の基本的な部分にバグは無いと思うよ。
static変数に確保するのはマイナーかもしれないが、滅多にやらないってほどではないし、
そもそも上記の通り、コンパイラにとって危険のある(バグに命中する可能性のある)使い方でもない。
463デフォルトの名無しさん (ワッチョイ 93e7-R5Nf)
2018/04/28(土) 16:59:13.74ID:9z8isRDe0 >>460
破壊って何?
破壊って何?
464デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 17:20:06.35ID:aIENMcPWd ふつうに、
クラスのインスタンスがstatic宣言と読んだけだ
static MyClass a;
スコープローカルかファイルローカルかはわからん
クラスのインスタンスがstatic宣言と読んだけだ
static MyClass a;
スコープローカルかファイルローカルかはわからん
465デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 17:29:35.84ID:ueAKslGb0466デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 17:46:24.07ID:aIENMcPWd おれは数学の専門家だぞ
わからないわけがない
わからないわけがない
467デフォルトの名無しさん (スップ Sdb3-LNFl)
2018/04/28(土) 17:46:53.04ID:aIENMcPWd なぜ問題を出したのか考えてみ
468デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/04/28(土) 18:39:11.84ID:ueAKslGb0 ひとまず俺の一つ目の予言は的中だな。
次に行こう。
>>467
ID:aIENMcPWd
お前の日本語の間違いをすべて訂正してみろ。
2つ目の予言をする。お前は言えない。
なぜならお前はゴキブリ韓国人であり、間違いを認識できていないから。
次に行こう。
>>467
ID:aIENMcPWd
お前の日本語の間違いをすべて訂正してみろ。
2つ目の予言をする。お前は言えない。
なぜならお前はゴキブリ韓国人であり、間違いを認識できていないから。
469デフォルトの名無しさん (アウアウカー Sadd-YAdU)
2018/04/29(日) 02:23:46.17ID:UY96NiMha C++でプラットフォームに依存しない音楽再生ライブラリってある?特にlinuxで使いたいんだけど。
mpg123とかいうのもみてみたんだけどプログラムに組み込むやり方が分からない
mpg123とかいうのもみてみたんだけどプログラムに組み込むやり方が分からない
470デフォルトの名無しさん (ワッチョイ 9334-WSc7)
2018/04/29(日) 02:25:23.22ID:kTR2ZRC/0 MIDAS
471デフォルトの名無しさん (ワッチョイ 59a7-BHYV)
2018/04/29(日) 07:28:51.71ID:riHNUW7H0 Gstreamer
472デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/29(日) 10:01:20.67ID:4Txko8z40 質問ですが
Q1.
浮動小数点型について表現しえる最小の値(負の値のうちの絶対値が最大のやつ)を取得する
環境非依存なやり方はどうすれば良いの?
-std::numeric_limits<double>::max()とか
-DBL_MAX
でおk?
Q2.
テンプレートを型引数が整数型と浮動小数点型で分けたいんですが
同じ名前のテンプレート名のまま、テンプレートの特殊化的な簡単に済ませる方法は無い?
Q1.
浮動小数点型について表現しえる最小の値(負の値のうちの絶対値が最大のやつ)を取得する
環境非依存なやり方はどうすれば良いの?
-std::numeric_limits<double>::max()とか
-DBL_MAX
でおk?
Q2.
テンプレートを型引数が整数型と浮動小数点型で分けたいんですが
同じ名前のテンプレート名のまま、テンプレートの特殊化的な簡単に済ませる方法は無い?
473デフォルトの名無しさん (ワッチョイ 8133-d4kB)
2018/04/29(日) 10:55:07.91ID:6B047Ccs0 >Q2
template <typename T, bool = std::is_floating_point<T>::value>
struct hoge {};
template <typename T>
struct hoge<T, true> {};
template <typename T, bool = std::is_floating_point<T>::value>
struct hoge {};
template <typename T>
struct hoge<T, true> {};
474デフォルトの名無しさん (ワッチョイ 73a5-luqG)
2018/04/29(日) 11:05:23.85ID:iHQcqnOH0475デフォルトの名無しさん (ワッチョイ 13a2-luqG)
2018/04/29(日) 13:22:08.35ID:WuAwAiPA0 >>472
std::numeric_limits<double>::lowest()
std::numeric_limits<double>::lowest()
476デフォルトの名無しさん (ワッチョイ 93bd-Mk12)
2018/04/29(日) 13:56:48.76ID:4Txko8z40477デフォルトの名無しさん (スップ Sdf3-LNFl)
2018/04/29(日) 15:24:36.24ID:AQKaesvCd たまにはlong doubleも思い出してあげてください
478デフォルトの名無しさん (ワイモマー MMb3-XMtE)
2018/04/30(月) 23:11:41.90ID:xhvNrk1GM Boost.Optionalを使う際に、
対象クラスが自分自身の有効無効を変更できるようにしようとしてみたところ、
宣言時に宣言対象を引数にとって初期化できることに気づきました。
変数の引数に変数自身を使うのは仕様的にありなのでしょうか?
ttps://wandbox.org/permlink/YLKYol7KdEOhpyGU
対象クラスが自分自身の有効無効を変更できるようにしようとしてみたところ、
宣言時に宣言対象を引数にとって初期化できることに気づきました。
変数の引数に変数自身を使うのは仕様的にありなのでしょうか?
ttps://wandbox.org/permlink/YLKYol7KdEOhpyGU
479デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/04/30(月) 23:32:18.45ID:9aMn2TSu0 ポインタか参照なら問題ない
中身は使えない
中身は使えない
480デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/01(火) 23:40:40.03ID:dOOCYV+Z0 CObject obj;
for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
}
↑みたいにdeleteせずにnew演算子でクラスオブジェクトを割り振り続けるプログラムってお行儀悪い?
CObject obj;
for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
delete(obj);
}
↑こういうふうにすべき? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
}
↑みたいにdeleteせずにnew演算子でクラスオブジェクトを割り振り続けるプログラムってお行儀悪い?
CObject obj;
for(i=0; i<N; i++)
{
obj = new CObject();
・・・(処理)・・・
delete(obj);
}
↑こういうふうにすべき? 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b)
481デフォルトの名無しさん (ワッチョイ 93eb-Kx3O)
2018/05/01(火) 23:49:10.85ID:+P0DkpYu0 unique_ptr使うべき
482デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/05/01(火) 23:54:52.50ID:2ADD+YWD0 今時newなんかを自分で書いてることに疑問を持ったほうがいい
483デフォルトの名無しさん (ワッチョイ 419f-TsVf)
2018/05/01(火) 23:55:37.66ID:b3AAvo5J0 >>480
お行儀の次元の話じゃない
お行儀の次元の話じゃない
484デフォルトの名無しさん (ワッチョイ 4150-LNFl)
2018/05/02(水) 00:01:31.48ID:LLl+2Gg10 手っ取り早く動かしたいその場限りのコードならそういうことをやることもある
くらいかな
くらいかな
485デフォルトの名無しさん (ワッチョイ 2b81-0GBF)
2018/05/02(水) 00:09:49.83ID:HN9ze8O60 ビンラディン並みのテロリストだな
486デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 00:09:55.64ID:MK7npuGj0 そんなにお行儀悪いんでつか(´;ω;`)・・・
487デフォルトの名無しさん (ワッチョイ 5be7-3HeQ)
2018/05/02(水) 00:43:03.85ID:VeqNn1690 そういうのやりたいならJavaやC#やれ
488デフォルトの名無しさん (ワッチョイ 9334-WSc7)
2018/05/02(水) 01:21:31.16ID:9riosu0F0 ポインタじゃないものにnewしたもの格納できるとでも思っているのかジャバグラマ上がりのトーシロー
489デフォルトの名無しさん (ワッチョイ db9b-zfJY)
2018/05/02(水) 01:32:41.73ID:G9KSYPOz0 なんでdeleteしなくていいと思ったんや
490デフォルトの名無しさん (ワッチョイ 2b81-0GBF)
2018/05/02(水) 01:39:46.98ID:HN9ze8O60 釣りだと思う
491デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 03:44:38.96ID:MK7npuGj0492デフォルトの名無しさん (ワッチョイ 93b3-tYAq)
2018/05/02(水) 06:00:07.99ID:3K4Hzh4Z0493デフォルトの名無しさん (ワッチョイ 8133-M5g1)
2018/05/02(水) 10:02:54.88ID:EfCiDMro0 大規模なコードで大量にオブジェクト生成するならアリだと思うけど
その場合もnewしたものをdeleteするための仕組みは必須だしね
追跡できなくなる、もしくは自分で自分を破棄する仕組みも無いようではダメ
その場合もnewしたものをdeleteするための仕組みは必須だしね
追跡できなくなる、もしくは自分で自分を破棄する仕組みも無いようではダメ
494デフォルトの名無しさん (ワッチョイ c1b3-luqG)
2018/05/02(水) 11:01:41.50ID:lsKTgXIy0 ライブラリに分ける利点ってなんですかね
495デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 14:44:29.23ID:MK7npuGj0496デフォルトの名無しさん (ワッチョイ db9b-zfJY)
2018/05/02(水) 14:47:38.93ID:G9KSYPOz0497デフォルトの名無しさん
2018/05/02(水) 15:02:47.22498デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 16:18:42.29ID:MK7npuGj0 >>497
class CTest
{
CFoo cfoo;
void CTest()
{
cfoo = new CFoo();
}
};
こんなんとかどうでしょう
class CTest
{
CFoo cfoo;
void CTest()
{
cfoo = new CFoo();
}
};
こんなんとかどうでしょう
499デフォルトの名無しさん (アウアウウー Sa45-M5g1)
2018/05/02(水) 16:23:28.41ID:BwUG32HZa500デフォルトの名無しさん (アウアウウー Sa45-luqG)
2018/05/02(水) 16:28:43.53ID:hqQx66t6a 山口メンバーも初期化できたらいいのに
501デフォルトの名無しさん (ワッチョイ 9334-WSc7)
2018/05/02(水) 16:29:15.41ID:9riosu0F0 ヤバいなジャバ上がりw
502デフォルトの名無しさん (アウアウウー Sa45-M5g1)
2018/05/02(水) 16:36:00.09ID:BwUG32HZa ちなみに非PODならメンバ初期化子に書かなくてもデフォルトコンストラクタで初期化子される
503デフォルトの名無しさん
2018/05/02(水) 16:36:35.49 そもそも>>498の例なら初期化子自体いらんしw
504デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 17:10:02.19ID:MK7npuGj0 >>499
そ、そうやって初期化したcfooはdeleteしなくてもいいんでつか?
そ、そうやって初期化したcfooはdeleteしなくてもいいんでつか?
505デフォルトの名無しさん (アウウィフ FF45-M5g1)
2018/05/02(水) 17:15:22.77ID:2RgXx2xAF506デフォルトの名無しさん (ワッチョイ 9334-WSc7)
2018/05/02(水) 17:19:29.16ID:9riosu0F0507デフォルトの名無しさん (ワッチョイ 318a-23pz)
2018/05/02(水) 17:35:57.58ID:EH+UkdGd0 教えてください
やりたい事は ↓
https://stackoverflow.com/questions/14706954/how-to-override-the-text-displayed-for-a-property-in-the-propertygrid
ここに出てるようなPropertyGridで、数値配列の値を16進で表示したい
[0] 0x0001
[1] 0x0002
[2] 0x0003
....
例えば↑とか、単にこれだけ
そうとう調べまくったんだが、配列の例はみつけられなかった
配列でなければ、実装例は結構見つかるんだが・・・
一見簡単そうなんだけど、俺のレベルでは不可能
やりたい事は ↓
https://stackoverflow.com/questions/14706954/how-to-override-the-text-displayed-for-a-property-in-the-propertygrid
ここに出てるようなPropertyGridで、数値配列の値を16進で表示したい
[0] 0x0001
[1] 0x0002
[2] 0x0003
....
例えば↑とか、単にこれだけ
そうとう調べまくったんだが、配列の例はみつけられなかった
配列でなければ、実装例は結構見つかるんだが・・・
一見簡単そうなんだけど、俺のレベルでは不可能
508デフォルトの名無しさん (アウウィフ FF45-M5g1)
2018/05/02(水) 18:09:52.99ID:2RgXx2xAF509デフォルトの名無しさん (ワッチョイ 318a-23pz)
2018/05/02(水) 18:25:45.38ID:EH+UkdGd0 いや、c# です
511デフォルトの名無しさん (ワッチョイ 318a-23pz)
2018/05/02(水) 18:29:31.79ID:EH+UkdGd0 ごめん間違えた、ここ C++のスレだった
隣で聞きます。
隣で聞きます。
>>504
delete しなくてもいいのです
delete しなくてもいいのです
513デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 19:04:04.70ID:MK7npuGj0514デフォルトの名無しさん (オッペケ Sr0d-OwZ7)
2018/05/02(水) 19:06:49.69ID:U7aQES8cr515デフォルトの名無しさん (ドコグロ MMa3-tYAq)
2018/05/02(水) 20:14:18.27ID:sTDjib3HM516デフォルトの名無しさん
2018/05/02(水) 23:29:42.51517はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 5b6f-luqG)
2018/05/02(水) 23:41:46.06ID:g0SlpjdS0 可能な限りスマートポインタを使え、そしてスマートポインタで駄目な場合はほとんどないってのはその通りなんだけど、
初心者が生ポインタをちゃんと理解したことのないままスマートポインタを使いこなせるとも思えぬ。
そこらへんはちゃんと分けて、今回の場合はまずは生ポインタを理解するという方向性で説明する場面じゃろ。
初心者が生ポインタをちゃんと理解したことのないままスマートポインタを使いこなせるとも思えぬ。
そこらへんはちゃんと分けて、今回の場合はまずは生ポインタを理解するという方向性で説明する場面じゃろ。
518デフォルトの名無しさん (ワッチョイ 9368-c97c)
2018/05/02(水) 23:47:44.17ID:MK7npuGj0519デフォルトの名無しさん (ワッチョイ c6e7-PabT)
2018/05/03(木) 00:10:52.91ID:XlBZHwDZ0 もうスマポはスマポとして理解させたほうがいいような気がするけどな
下手な生ポの知識は初心者に有害だ
下手な生ポの知識は初心者に有害だ
520デフォルトの名無しさん (ワッチョイ bb65-f8tT)
2018/05/03(木) 01:53:27.71ID:OyWVOyw+0 ていうかコンストラクタだから返却値型いらんやん
521デフォルトの名無しさん (ワッチョイ 1ae9-P8oq)
2018/05/03(木) 02:06:40.03ID:jt77zXjA0 ポインターをdeleteせずに扱う猛者がいると聞いて駆け付けてきた
522はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-XJxX)
2018/05/03(木) 02:41:54.13ID:HFudy7bE0 delete をしない戦略ってのは無くはないよ。
アプリケーションの起動時直後にガッと大量のメモリを必要として、
終了直前に全部解放するってパターンなら、
どうせプロセスの終了と一緒にリソースは回収されるのでわざわざメモリ解放の処理を入れる必要はない。
(C++ だとデストラクタは必ずしもメモリを解放するだけではないので注意が必要だが)
だけどそういう戦略をとれるのはちゃんと理解した上で問題にならないことを確信できるだけの知識があってこそだわな。
というか、それ以上に、確保したのを解放しないのは「気持ち悪い」と感じる心が C/C++er にはある。
アプリケーションの起動時直後にガッと大量のメモリを必要として、
終了直前に全部解放するってパターンなら、
どうせプロセスの終了と一緒にリソースは回収されるのでわざわざメモリ解放の処理を入れる必要はない。
(C++ だとデストラクタは必ずしもメモリを解放するだけではないので注意が必要だが)
だけどそういう戦略をとれるのはちゃんと理解した上で問題にならないことを確信できるだけの知識があってこそだわな。
というか、それ以上に、確保したのを解放しないのは「気持ち悪い」と感じる心が C/C++er にはある。
523デフォルトの名無しさん (スップ Sd4a-EqUg)
2018/05/03(木) 05:19:48.86ID:qNLpdLzsd 組み込みだとそもそも終了なんてものがなかったりする
524デフォルトの名無しさん (ワッチョイ 6a22-XJxX)
2018/05/03(木) 20:37:30.17ID:giVWGYEy0 解放しないメモリをnewとか頭湧いてんのか
525はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-XJxX)
2018/05/03(木) 20:40:51.26ID:HFudy7bE0 あたまがあったまってるんだ。
526デフォルトの名無しさん (ブーイモ MMef-+yEv)
2018/05/03(木) 21:00:46.14ID:Nqnp2049M 確保済みメモリに対してのnewってあるよ
>>526
placement new の意味が今でもよくわかりません…どんなときに使うのかなあ…
placement new の意味が今でもよくわかりません…どんなときに使うのかなあ…
528片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-AL4z)
2018/05/03(木) 21:18:01.47ID:RMsmDfZSd char buf[MAX_BUF];
new(buf) MY_STRUCT(1, 2, 3);
new(buf) MY_STRUCT(1, 2, 3);
529片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-AL4z)
2018/05/03(木) 21:18:51.15ID:RMsmDfZSd char buf[sizeof(MY_STRUCT)];
new(buf) MY_STRUCT(1, 2, 3);
new(buf) MY_STRUCT(1, 2, 3);
530はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 466f-XJxX)
2018/05/03(木) 21:19:45.60ID:HFudy7bE0 >>527
VRAM みたいな特殊なメモリを C++ のオブジェクトに見せかけたい場合とか
VRAM みたいな特殊なメモリを C++ のオブジェクトに見せかけたい場合とか
531片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdaa-AL4z)
2018/05/03(木) 21:20:25.98ID:RMsmDfZSd すでに確保したメモリーブロック上でコンストラクターを発動させる。
532デフォルトの名無しさん (ワッチョイ 0b33-f8tT)
2018/05/03(木) 21:23:27.91ID:IMqmw2mT0 組み込みとかゲーム機のような、最初に一気に確保する環境で使うんじゃないかね
といっても確保済みのメモリに対して断片化しないように管理する仕組み作ったら、必然的にnew演算子もオーバーロードするだろうから結局placement new使わんかもしれんけど
といっても確保済みのメモリに対して断片化しないように管理する仕組み作ったら、必然的にnew演算子もオーバーロードするだろうから結局placement new使わんかもしれんけど
533デフォルトの名無しさん (ブーイモ MMc7-+yEv)
2018/05/04(金) 04:49:56.51ID:JszYn0L4M クラスを丸ごとDLL化するときにはnew系をオーバーロード
しておかないと解放時にエラーになるべ。
ヒープはDLL単位にあるので集めておきたい場合はplacement使う
しておかないと解放時にエラーになるべ。
ヒープはDLL単位にあるので集めておきたい場合はplacement使う
534デフォルトの名無しさん (アウアウウー Sacf-a7mP)
2018/05/04(金) 11:44:28.56ID:8Ch7v1Nca unique_ptrの配列版でメモリの再確保を行いたい場合どのように行うのがベターですか?
535デフォルトの名無しさん (スッップ Sdaa-EqUg)
2018/05/04(金) 11:50:52.58ID:Z8Fitafid 何に対してベター?
536デフォルトの名無しさん (ドコグロ MM33-XUQH)
2018/05/04(金) 12:02:46.79ID:uwR6wCpjM >>534
unique_ptr::reset( ) じゃねーの?
unique_ptr::reset( ) じゃねーの?
537デフォルトの名無しさん (ワッチョイ 8abd-3xiy)
2018/05/04(金) 15:25:56.64ID:xM/0IOG70 スマポ使うときは最初にnewするもんなんじゃ…
538デフォルトの名無しさん (ワッチョイ ab7f-XJxX)
2018/05/04(金) 15:29:55.09ID:YqO5U4DS0 make_unique使ってね
539デフォルトの名無しさん (ワッチョイ c6e7-PabT)
2018/05/04(金) 15:47:45.28ID:kp+zcI/10 配列伸ばしたいなら素直にvector使え
540デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/04(金) 22:00:12.15ID:VI6126jwa いろんな意味にとれるから質問の答えは未定義
541デフォルトの名無しさん (ワッチョイ 53b3-jSUp)
2018/05/05(土) 18:32:19.19ID:sJdk0i7H0 [][][] [[[ ] X_[[[ [] ][ [] ][][[[]
542デフォルトの名無しさん (ワイモマー MMaa-UBB+)
2018/05/06(日) 13:23:46.73ID:z9ZCOpRGM 以下のように、派生クラスのメンバ関数で基底クラスのメンバ関数を呼ぶように
基底クラスが派生クラスに強制する方法はないでしょうか?
ttps://wandbox.org/permlink/K4IHMYwOsutPQz3i
基底クラスが派生クラスに強制する方法はないでしょうか?
ttps://wandbox.org/permlink/K4IHMYwOsutPQz3i
543デフォルトの名無しさん (ワッチョイ c6e7-PabT)
2018/05/06(日) 14:01:54.85ID:f5coeozT0 FAQやな
インターフェースとカスタマイズポイントを分けろ
struct base {
void f() { //非仮想
cout << "base" << endl;
this->f_custom();
}
private:
virtual void f_custom(){}
};
struct child : base {
void f_custom() override {
cout << "child" << endl;
}
};
インターフェースとカスタマイズポイントを分けろ
struct base {
void f() { //非仮想
cout << "base" << endl;
this->f_custom();
}
private:
virtual void f_custom(){}
};
struct child : base {
void f_custom() override {
cout << "child" << endl;
}
};
544デフォルトの名無しさん (ワッチョイ de22-XJxX)
2018/05/06(日) 14:08:44.77ID:1ubTl4pj0545542 (ワイモマー MMaa-UBB+)
2018/05/06(日) 14:59:52.15ID:z9ZCOpRGM レスありがとうございます。
NVIというのがあるのですね。
(大昔に勉強したような…しかし思い出せず)
NVIというのがあるのですね。
(大昔に勉強したような…しかし思い出せず)
546デフォルトの名無しさん (ワッチョイ 8a34-FPGR)
2018/05/06(日) 15:57:13.38ID:Amh1VkyH0 大昔とかの問題じゃなくて基本だぞ
547デフォルトの名無しさん (ブーイモ MMaa-Fq9a)
2018/05/06(日) 19:15:44.52ID:5lNukHv1M548デフォルトの名無しさん (ワッチョイ 53b3-jSUp)
2018/05/06(日) 19:32:29.01ID:9CUhRDV/0 }]] [[《_["[[]]" 〈[]》》 [][][]0,1》》〈〉 [] } } "B,V,0%%%,*1BVLO,SASA1`}}//%\\0,1\"VL"\
549デフォルトの名無しさん (ワッチョイ 8ab3-XUQH)
2018/05/06(日) 19:37:26.47ID:hMxfhnzD0550デフォルトの名無しさん (ワッチョイ 27d7-XJxX)
2018/05/07(月) 05:32:12.66ID:WYJ+W2Mc0 >>547
12行目のbase::f()はvirtualを抑止してpure virtualを呼び出す
13行目のf();は動的結合でchid::f()を呼び出す
baseは抽象クラスでnew base{}できないので
13行目の動的結合がbase::f()を呼び出すということは起こりえない
だからif(typeid(*this) != typeid(base))のようなチェックをしていない
12行目のbase::f()はvirtualを抑止してpure virtualを呼び出す
13行目のf();は動的結合でchid::f()を呼び出す
baseは抽象クラスでnew base{}できないので
13行目の動的結合がbase::f()を呼び出すということは起こりえない
だからif(typeid(*this) != typeid(base))のようなチェックをしていない
551デフォルトの名無しさん (ワッチョイ 0a68-pRpi)
2018/05/07(月) 22:52:31.63ID:JZ0Er0Nn0 ちょっと根本的な質問を。
C#が既に普及しているなかあえてC++に固執する理由ってある?
C#が既に普及しているなかあえてC++に固執する理由ってある?
552デフォルトの名無しさん (ワッチョイ 8a34-FPGR)
2018/05/07(月) 23:34:15.98ID:Xl7KiTHE0 MSのOSしか使わないなんちゃてPGならC#で十分じゃないの
553デフォルトの名無しさん (スップ Sdaa-jqGN)
2018/05/08(火) 09:42:55.49ID:JvzvEXdEd mono/Xamarinはしんどいと言う事を知らない世界の内はいいんじゃない?
大体Win限定だとしても高速化するのにC++で書いたのをdllimportするだろう
大体Win限定だとしても高速化するのにC++で書いたのをdllimportするだろう
554デフォルトの名無しさん (ワッチョイ bf8a-+yEv)
2018/05/08(火) 10:29:13.38ID:EjLESs2X0 ざまりんが苦しい人は信仰が足りないのです
僕は信仰の自由を主張しますけどね
僕は信仰の自由を主張しますけどね
>>551
余計な依存関係をかかえないのが嬉しいです
余計な依存関係をかかえないのが嬉しいです
556デフォルトの名無しさん
2018/05/09(水) 03:49:30.68 Boostとか使ってると余計な依存関係をかかえてしまうけどな
C言語が一番
C言語が一番
557デフォルトの名無しさん (スッップ Sdaa-EqUg)
2018/05/09(水) 10:07:16.66ID:Ajqxpjd7d 一番多くの環境で使えるのはC言語
RAMが数十バイトしかないような非常にチープな8bitマイコンでも使える
RAMが数十バイトしかないような非常にチープな8bitマイコンでも使える
558デフォルトの名無しさん (ワッチョイ 1e81-jSUp)
2018/05/09(水) 10:29:31.98ID:ZxmL37bf0 数十バイトだとスタック領域ももパンクしそう、厳しいのではないか?
559デフォルトの名無しさん (ブーイモ MMaa-+yEv)
2018/05/09(水) 10:34:17.87ID:3kbM/2hPM 流石に盛り過ぎ
560デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 10:54:36.47ID:7azCP7HQa 知らないで盛ってると言うのはどうかと
昔6ピンpicでc使ってたけどRAMは16バイトだった気がする
昔6ピンpicでc使ってたけどRAMは16バイトだった気がする
561デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 11:01:43.78ID:7azCP7HQa 調べたら勘違いで自分の持ってたのはSRAM64バイトのpicだった
562デフォルトの名無しさん (ブーイモ MMaa-+yEv)
2018/05/09(水) 11:58:05.29ID:3kbM/2hPM PIC12F609とかでもプログラム領域は1Kwあるけど
数十バイトしかない奴の型番教えてくれくれ
数十バイトしかない奴の型番教えてくれくれ
563デフォルトの名無しさん (スッップ Sdaa-EqUg)
2018/05/09(水) 12:00:11.72ID:jousW3+sd PIC10F200はRAMが16バイトですね
制約は当然ありますがC言語で開発出来ます
制約は当然ありますがC言語で開発出来ます
564デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 12:00:58.98ID:1NFscAG5a C++どころかCすらやってはいけないレベルだな
恥ずかしいやつ
恥ずかしいやつ
565デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 12:02:35.51ID:1NFscAG5a >>562
ROMとRAMの区別がつかない人がなんでこのスレにいるのか?
ROMとRAMの区別がつかない人がなんでこのスレにいるのか?
566デフォルトの名無しさん (ブーイモ MMaa-+yEv)
2018/05/09(水) 12:04:25.14ID:3kbM/2hPM ハーバードアーキテクチャのデータメモリサイズだけ書くの
卑怯だと思うの。プログラムメモリは256ワードあるじゃん
卑怯だと思うの。プログラムメモリは256ワードあるじゃん
567デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 12:07:19.83ID:1NFscAG5a >>557を受けての話だから
そのチープなマイコンで開発にCが使えてる
そのチープなマイコンで開発にCが使えてる
568デフォルトの名無しさん (ブーイモ MMaa-+yEv)
2018/05/09(水) 12:09:43.50ID:3kbM/2hPM だから盛り過ぎでしょ
569デフォルトの名無しさん (アウアウウー Sacf-jSUp)
2018/05/09(水) 12:10:13.60ID:1NFscAG5a >>568
じゃあできないというのか?
じゃあできないというのか?
570デフォルトの名無しさん (ラクッペ MM33-vGoe)
2018/05/09(水) 12:45:08.73ID:e8iSV/lBM >>551
競技プログラミングとかunity覚えるの面倒とか?
競技プログラミングとかunity覚えるの面倒とか?
571デフォルトの名無しさん (スップ Sd4a-EqUg)
2018/05/09(水) 13:09:28.13ID:J0gm0Ysvd572デフォルトの名無しさん (ワッチョイ 6afa-XJxX)
2018/05/09(水) 18:42:26.74ID:X9SFPyiC0 スタックの話だよね
スタックはRAMであることが絶対条件なので
ROMがどんだけあろうが関係ない
スタックはRAMであることが絶対条件なので
ROMがどんだけあろうが関係ない
573デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/09(水) 18:49:54.96ID:bhGLBTeZa C# と C++ は世の中でどちらのほうが使われているのでしょうか?
いま、 C++ の本(ロベール)を読んでいますが、無駄ですか?
柴田望洋訳の分厚い本も買ってしまいました。
いま、 C++ の本(ロベール)を読んでいますが、無駄ですか?
柴田望洋訳の分厚い本も買ってしまいました。
574デフォルトの名無しさん
2018/05/09(水) 18:54:28.74 C++は無駄とは言い切れないがロベールは無駄
575デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/09(水) 18:59:28.28ID:bhGLBTeZa576デフォルトの名無しさん (ワッチョイ 1e81-jSUp)
2018/05/09(水) 19:01:30.85ID:ZxmL37bf0 何をやりたいと考えているか次第
577デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/09(水) 19:05:22.21ID:bhGLBTeZa >>576
趣味でアルゴリズムとデータ構造を勉強しています。
プログラミングコンテストの問題(Aizu Online Judge)を解いたりもしています。
もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
セジウィックとウエインの本や講義動画を読んだり見たりするときには、
Javaの入門書を見たりしています。
趣味でアルゴリズムとデータ構造を勉強しています。
プログラミングコンテストの問題(Aizu Online Judge)を解いたりもしています。
もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
セジウィックとウエインの本や講義動画を読んだり見たりするときには、
Javaの入門書を見たりしています。
578デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/09(水) 19:07:11.19ID:bhGLBTeZa >>576
コンピューターサイエンスを広く学ぶ上で一番適した言語がいいかなとも考えています。
コンピューターサイエンスを広く学ぶ上で一番適した言語がいいかなとも考えています。
579デフォルトの名無しさん (ワッチョイ 1e81-jSUp)
2018/05/09(水) 19:16:40.18ID:ZxmL37bf0 C++のスレで言うのもどうかとは思うが、
初心者が覚えるのに相応しい言語はJavaじゃないかなと思う
アルゴリズムだけを学びたいなら、C言語が良いかもしれない
他の人の意見も聞いてね
初心者が覚えるのに相応しい言語はJavaじゃないかなと思う
アルゴリズムだけを学びたいなら、C言語が良いかもしれない
他の人の意見も聞いてね
>>577
そういうのがやりたくて、しかも今 C で片言がしゃべれるのなら、そのまま進めるのが一番いい
そういうのがやりたくて、しかも今 C で片言がしゃべれるのなら、そのまま進めるのが一番いい
581デフォルトの名無しさん (アウアウウー Sacf-XJxX)
2018/05/09(水) 20:02:47.70ID:bhGLBTeZa582デフォルトの名無しさん (ワッチョイ 6afa-XJxX)
2018/05/09(水) 21:19:28.33ID:X9SFPyiC0583デフォルトの名無しさん (ワントンキン MMa3-k/8h)
2018/05/10(木) 12:15:01.11ID:yXMj8vMdM >>578
Occam2 とか XCが最凶かもな
Occam2 とか XCが最凶かもな
584デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
2018/05/10(木) 12:20:40.60ID:YLAKf1v1a Cはアルゴリズム勉強にはあまり向いてないと思う
以前各言語向けのアルゴリズム辞典みたいのを見比べてみたけど
Cのだけ異質な感じ
forのカウントいじってあったりして勉強しにくい
少なくともオブジェクト指向入れた言語じゃないと後で生かしにくい
以前各言語向けのアルゴリズム辞典みたいのを見比べてみたけど
Cのだけ異質な感じ
forのカウントいじってあったりして勉強しにくい
少なくともオブジェクト指向入れた言語じゃないと後で生かしにくい
585はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-k37M)
2018/05/10(木) 15:18:57.11ID:RiSXhiCD0 オブジェクト指向が導入されているべきかどうかというよりも、単純に C は抽象化の能力が低いんだよ。
下層レイヤを上手く隠せないから段階的に積み上げていくというのがやり難い。
学習段階では上から下まで見えているって方が分かりやすいということはあるかもしれないので、
どちらが良いかというのは考え方とか好みにもよるので一概には言えないと思う。
下層レイヤを上手く隠せないから段階的に積み上げていくというのがやり難い。
学習段階では上から下まで見えているって方が分かりやすいということはあるかもしれないので、
どちらが良いかというのは考え方とか好みにもよるので一概には言えないと思う。
586デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/10(木) 15:24:31.29ID:bWcYs//f0 アルゴリズムの仕組みが言語の内部に隠されると理解を妨げるだろう
オブジェクト指向については、別の機会に学べば良い
オブジェクト指向については、別の機会に学べば良い
587はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-k37M)
2018/05/10(木) 15:59:00.64ID:RiSXhiCD0 そうとも言えない。
複雑なものを理解するには「分解する」は基本的なアプローチのひとつで、レイヤを切り分けるのは有用だよ。
それが >>585 に書いた「段階的に積み上げていく」の意図ね。
かといってそれで全体像が見通しにくくなってもそれはそれでアレだし、何がベストかなんて言えないよ。
やりやすいと思った方でやるしかしょうがないんじゃね。
複雑なものを理解するには「分解する」は基本的なアプローチのひとつで、レイヤを切り分けるのは有用だよ。
それが >>585 に書いた「段階的に積み上げていく」の意図ね。
かといってそれで全体像が見通しにくくなってもそれはそれでアレだし、何がベストかなんて言えないよ。
やりやすいと思った方でやるしかしょうがないんじゃね。
588デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/10(木) 16:46:33.01ID:bWcYs//f0 C言語で書かれたアルゴリズムが読み解けるようでないと
後で困るだろう
後で困るだろう
589デフォルトの名無しさん (ワッチョイ 2312-YHaA)
2018/05/10(木) 17:51:59.26ID:Ulb5C2sT0 C以外だとリストのシャッフルはshuffleだけで済ませられる
Cだとshuffleの中身を書かないといけない
C以外だと「Combination()を使おう」
Cだと「Combination()を実装しよう」
くらいの差がある
アルゴリズムがどこまで指すのか分らないが、楽しいことから先にやればいいんじゃねえの、ということで、C以外から
Cだとshuffleの中身を書かないといけない
C以外だと「Combination()を使おう」
Cだと「Combination()を実装しよう」
くらいの差がある
アルゴリズムがどこまで指すのか分らないが、楽しいことから先にやればいいんじゃねえの、ということで、C以外から
590デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/10(木) 18:15:07.55ID:bWcYs//f0 アルゴリズムを学習するって、その実装の中身を理解することだろう
591デフォルトの名無しさん (アウアウウー Sa89-tJ6Z)
2018/05/10(木) 18:39:39.67ID:k0RUZ23fa 個人的には、各種ソートや基本的なデータ構造の操作を自前で書くようなシンプルなところから入った方が分かりやすいかと思うけど、まあ人それぞれかなと。
592デフォルトの名無しさん (アウアウウー Sa89-k37M)
2018/05/10(木) 18:45:52.70ID:yjf1B9Q5a みなさん、ありがとうございます。
セジウィックとウエインのアルゴリズムの本に載っているのは、おそらく
ジェネリクスを使っているので一般性もあって、かつ効率もいいプログラム
だと思います。
ライブラリのようなクオリティーでプログラムを作るというのが理想です。
セジウィックとウエインのアルゴリズムの本に載っているのは、おそらく
ジェネリクスを使っているので一般性もあって、かつ効率もいいプログラム
だと思います。
ライブラリのようなクオリティーでプログラムを作るというのが理想です。
593デフォルトの名無しさん (アウアウウー Sa89-k37M)
2018/05/10(木) 18:51:57.46ID:yjf1B9Q5a アルゴリズムの本というと C 言語でプログラムが書かれた本が多いですが、
やっと C++ で書かれた日本語の本が最近出版されましたね。
セジウィックとウエインの本よりももっと初歩的な本のようですが。
データ構造とアルゴリズム (電子情報通信レクチャーシリーズ B-8) 単行本 ? 2018/2/1
岩沼 宏治 (著), 美濃 英俊 (著), 鍋島 英知 (著),
やっと C++ で書かれた日本語の本が最近出版されましたね。
セジウィックとウエインの本よりももっと初歩的な本のようですが。
データ構造とアルゴリズム (電子情報通信レクチャーシリーズ B-8) 単行本 ? 2018/2/1
岩沼 宏治 (著), 美濃 英俊 (著), 鍋島 英知 (著),
594デフォルトの名無しさん (スップ Sd43-lXkA)
2018/05/10(木) 19:17:25.91ID:4Q48RAuxd アルゴリズムの抽象的な部分(オーダーとか適用するデータ構造の再帰性や対応関係)を学ぶならCよりML系の方が向いてるは向いてると思う
ただ環境構築なんかの障壁もあるだろうし最終的にCは触るだろうけどアルゴリズム以外の所で詰まりにくいという意味でC#を推してみる
ただ環境構築なんかの障壁もあるだろうし最終的にCは触るだろうけどアルゴリズム以外の所で詰まりにくいという意味でC#を推してみる
595デフォルトの名無しさん (スップ Sd43-lXkA)
2018/05/10(木) 19:18:39.74ID:4Q48RAuxd >>594
勿論F#でもいいし理想はそうだが好みというかネットの情報量の多さ的にC#を挙げた
勿論F#でもいいし理想はそうだが好みというかネットの情報量の多さ的にC#を挙げた
596デフォルトの名無しさん (ワッチョイ 1be7-1eaZ)
2018/05/10(木) 19:24:56.01ID:faWxDCCY0 C#はLinqが便利すぎてお勉強用としてはどうなんだろうなぁ
何やるかによるけど
何やるかによるけど
597デフォルトの名無しさん (スップ Sd43-lXkA)
2018/05/10(木) 20:05:12.45ID:4Q48RAuxd ああ勘違いしていた
アルゴリズムを勉強したいのではなく
>>もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
>>アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
なのね
であれば >>573 氏が現役バリバリな時の主流の言語なんて今からじゃ予想つかないだろうし、実務なら最も適した言語が使われるだけだからC++をそのままやり続ければいいと思う
コンピュータサイエンス自体死ぬほど広範囲な学問で、実務のプログラミングとの間にもやっぱり開きがあって万能な言語なんて無いよ
敢えて言うなら物理と数学、これだけは裏切らない
アルゴリズムを勉強したいのではなく
>>もし、プログラマーになるとした場合、もっとも必要とされる言語を使って、
>>アルゴリズムとデータ構造の勉強をすれば効率的かなと考えています。
なのね
であれば >>573 氏が現役バリバリな時の主流の言語なんて今からじゃ予想つかないだろうし、実務なら最も適した言語が使われるだけだからC++をそのままやり続ければいいと思う
コンピュータサイエンス自体死ぬほど広範囲な学問で、実務のプログラミングとの間にもやっぱり開きがあって万能な言語なんて無いよ
敢えて言うなら物理と数学、これだけは裏切らない
598デフォルトの名無しさん (ドコグロ MM93-pJ79)
2018/05/10(木) 21:40:19.82ID:n6BTi4dIM >>597
あと英語な
あと英語な
599デフォルトの名無しさん (ワッチョイ e3cb-k37M)
2018/05/10(木) 21:41:29.95ID:tcNeLXMy0 >>585
そこがいいんだよ
隠蔽されたことを忘れたフリをし
本当は忘れていないということの練習に向いている
忘れたフリが綺麗なコードの練習
本当は忘れていないことが性能評価につながる
両立した技能の練習に向いているということだ
そこがいいんだよ
隠蔽されたことを忘れたフリをし
本当は忘れていないということの練習に向いている
忘れたフリが綺麗なコードの練習
本当は忘れていないことが性能評価につながる
両立した技能の練習に向いているということだ
600デフォルトの名無しさん (ワントンキン MMa3-k/8h)
2018/05/11(金) 12:08:47.61ID:CPfY1M+aM601デフォルトの名無しさん (アウアウウー Sa89-Iyo3)
2018/05/11(金) 12:33:06.03ID:Asz7DXCua 今はどうか知らないけどcは標準でvectorやlistやmapがないから
そこから始めないといけないのでめんどくさい
アルゴリズム辞典見たら配列をdefineされたNやMで確保してた
ライブラリとして使う気ゼロ
そこから始めないといけないのでめんどくさい
アルゴリズム辞典見たら配列をdefineされたNやMで確保してた
ライブラリとして使う気ゼロ
602デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 13:01:20.12ID:Mluu9Rs0d603デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 13:03:39.86ID:Mluu9Rs0d604デフォルトの名無しさん (ブーイモ MMeb-k/8h)
2018/05/11(金) 13:59:40.72ID:lM6VzEPtM >>602
あーハイハイそうですね〜
あーハイハイそうですね〜
605デフォルトの名無しさん (ワッチョイ 2565-5o/y)
2018/05/11(金) 15:05:19.79ID:KxM4SNOx0 >>603
コスト云々よりジェネリクスが無いから汎用コンテナを作るのが難しい
コスト云々よりジェネリクスが無いから汎用コンテナを作るのが難しい
606デフォルトの名無しさん (ラクッペ MM01-XMWP)
2018/05/11(金) 15:52:32.74ID:MTbwW/C5M 作るのが難しい人は拾ってくればいいだけ
607デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/11(金) 18:24:24.95ID:biwWi4aJ0 数十バイトしかないなら、普通アセンブラで書くだろう
608デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 18:50:06.30ID:Mluu9Rs0d そうでもない
普通にCが使えるので
普通にCが使えるので
609デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 18:55:57.64ID:Mluu9Rs0d610デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/11(金) 19:49:06.46ID:l0MSXuwV0611デフォルトの名無しさん (ワッチョイ 2565-5o/y)
2018/05/11(金) 19:59:50.91ID:KxM4SNOx0 >>609
静的型の恩恵が受けられなくなるだろ?
静的型の恩恵が受けられなくなるだろ?
612デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 20:34:03.62ID:Mluu9Rs0d で?
613デフォルトの名無しさん (ブーイモ MMeb-/P3g)
2018/05/11(金) 20:40:41.03ID:x5BQ9FS4M614はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-Iyo3)
2018/05/11(金) 20:56:19.66ID:e+Ei11A70 初期の JAVA もコンテナを使うときにキャストが必須ってアレな仕様だったよな。
615デフォルトの名無しさん (アウアウウー Sa89-k37M)
2018/05/11(金) 21:04:30.87ID:2EGPeEG9a 昔は仕様がダメで段々改良されていくということがありますが、
それはなぜなのでしょうか?
その当時はハードウェアの性能上そういう仕様にせざるを得なかったというような
理由があるのでしょうか?
それとも単に思慮が足りなかったというだけでしょうか?
それはなぜなのでしょうか?
その当時はハードウェアの性能上そういう仕様にせざるを得なかったというような
理由があるのでしょうか?
それとも単に思慮が足りなかったというだけでしょうか?
616デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 21:16:49.77ID:Mluu9Rs0d 理由はいろいろ
617はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-Iyo3)
2018/05/11(金) 21:20:43.57ID:e+Ei11A70618デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/11(金) 21:23:11.17ID:biwWi4aJ0 仕様が固まらないうちに作る時は、それなりの暫定仕様か何らかの制限事項を設けて開発したな
619デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 21:36:00.99ID:Mluu9Rs0d 知見が足りなかったなんてのは少数派と思う
シンプルな仕様からだんだんと機能追加で肥大化の方向
ってのがほとんど
シンプルな仕様からだんだんと機能追加で肥大化の方向
ってのがほとんど
>>619
C89 からの「関数の引数として構造体が(実体渡しとして)OK」というのは、私には堕落以外のなにものでもないと
C89 からの「関数の引数として構造体が(実体渡しとして)OK」というのは、私には堕落以外のなにものでもないと
621デフォルトの名無しさん (ワッチョイ 1be7-1eaZ)
2018/05/11(金) 21:53:49.41ID:HARszYd10 昔のC++にあった(今もある)糞の山は、今のモダンな他言語たちへの反面教師として大いに役立った
622デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/11(金) 21:55:02.56ID:Mluu9Rs0d 例えばどの仕様が糞?
623デフォルトの名無しさん (ワッチョイ 2565-5o/y)
2018/05/11(金) 22:06:17.59ID:KxM4SNOx0624デフォルトの名無しさん (アウアウカー Sa11-jbYT)
2018/05/11(金) 23:57:53.51ID:MowAKA7Xa 独習C++は一通り読んだんだが次に読む本ある?問題集みたいなのとか
>>624
私がお勧めしているのは
https://www.amazon.co.jp/dp/4894714221/
https://www.amazon.co.jp/dp/4881357786/
前者は実は難があって、変てこな実装をしている部分もありますが、それを自分で調べて解決すれば、強くなれると思います
後者は STL の解説本です
いずれも C++11 以前で今となっては古いのですが、代わりになるような本がない…
両方とも私は読んでいますので、普通の質問には答えることができます
私がお勧めしているのは
https://www.amazon.co.jp/dp/4894714221/
https://www.amazon.co.jp/dp/4881357786/
前者は実は難があって、変てこな実装をしている部分もありますが、それを自分で調べて解決すれば、強くなれると思います
後者は STL の解説本です
いずれも C++11 以前で今となっては古いのですが、代わりになるような本がない…
両方とも私は読んでいますので、普通の質問には答えることができます
626デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
2018/05/12(土) 00:24:10.29ID:TkoJoFTb0 最初に読む本は禿4版一択ですよ。
627デフォルトの名無しさん (ワッチョイ 3d9e-pJrV)
2018/05/12(土) 01:17:09.76ID:hwxaPbIq0 どの言語でも、入門書の次は、Effective 何々
628デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 05:59:18.81ID:D96wT16B0629デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 06:50:27.10ID:QiJLTR+Nd630デフォルトの名無しさん (ワッチョイ e3cb-Ao7v)
2018/05/12(土) 07:33:39.79ID:eFTG6CfX0 >>623
データ構造の要素が静的に型が決まろうがそうでなかろうが、必要な要素数のメモリを確保する作業に違いはない。
せいぜい型のサイズを余計に掛け算するくらいだ。
確保するサイズが間違っていれば静的に型が決まろうがメモリ破壊は起きる。
もう少し具体的に示してくれないか?
データ構造の要素が静的に型が決まろうがそうでなかろうが、必要な要素数のメモリを確保する作業に違いはない。
せいぜい型のサイズを余計に掛け算するくらいだ。
確保するサイズが間違っていれば静的に型が決まろうがメモリ破壊は起きる。
もう少し具体的に示してくれないか?
631デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 07:37:30.31ID:D96wT16B0 静的な型の恩恵がどうたらって
mallocがvoid*を返すのと同じだろ
問題ちゃ問題だがそんなもん怖がるやつぁC使いに向かない
mallocがvoid*を返すのと同じだろ
問題ちゃ問題だがそんなもん怖がるやつぁC使いに向かない
632デフォルトの名無しさん (アウアウウー Sa89-5o/y)
2018/05/12(土) 08:45:19.55ID:vhGL8v7ea >>629
静的なら実行時パフォーマンスには影響しない
>>630
「既に壊しうるのだからちょっとくらい壊せる場所増やしてもいいでしょ」には無条件では同意しかねる
>>631
向いていようがいまいがCの案件はあるわけで, 可能な限り安全にコーディングしたいと思うのは可笑しいか?
で話を戻すと, 汎用コンテナのCでの実装には, 大きく分けてもdefine使った型安全な実装とvoid *を使ったオーバーヘッドあり型安全なし実装が考えられるわけで, まずそれだけでこうして対立し得る
実装上でもいずれもpros/consがあるわけで, そりゃ規格がまとまる道理がないよね, って主張
別に必要最小限の機能で自分で実装することを否定するわけじゃないし, 型安全が絶対だという気もない
静的なら実行時パフォーマンスには影響しない
>>630
「既に壊しうるのだからちょっとくらい壊せる場所増やしてもいいでしょ」には無条件では同意しかねる
>>631
向いていようがいまいがCの案件はあるわけで, 可能な限り安全にコーディングしたいと思うのは可笑しいか?
で話を戻すと, 汎用コンテナのCでの実装には, 大きく分けてもdefine使った型安全な実装とvoid *を使ったオーバーヘッドあり型安全なし実装が考えられるわけで, まずそれだけでこうして対立し得る
実装上でもいずれもpros/consがあるわけで, そりゃ規格がまとまる道理がないよね, って主張
別に必要最小限の機能で自分で実装することを否定するわけじゃないし, 型安全が絶対だという気もない
633デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 08:57:39.01ID:QiJLTR+Nd 高速コンパクトと安全性利便性は相反するものだ
諦めろ
諦めろ
635デフォルトの名無しさん (アウアウウー Sa89-5o/y)
2018/05/12(土) 09:12:02.44ID:vhGL8v7ea >>634
必読書ですしおすし
必読書ですしおすし
636デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 09:13:51.54ID:PbE4ojLD0 >>632
> void *を使ったオーバーヘッドあり
とは何?サイズ管理+アドレスの計算のこと?
だったらC++の汎用コンテナでも同じ事を内部でやっているし、オーバーヘッドはないが。
見た目でしか分からない人はCに向いていないぞ。
というか、型安全が欲しければC++を、
そんなん要らんから小さくて早いコードを、というのならCを、ってだけだろ。
その分自分で管理する項目が増えるだけの話で。
選択肢はユーザー側に与えられているのだから、それ以上は要らんだろ。
> void *を使ったオーバーヘッドあり
とは何?サイズ管理+アドレスの計算のこと?
だったらC++の汎用コンテナでも同じ事を内部でやっているし、オーバーヘッドはないが。
見た目でしか分からない人はCに向いていないぞ。
というか、型安全が欲しければC++を、
そんなん要らんから小さくて早いコードを、というのならCを、ってだけだろ。
その分自分で管理する項目が増えるだけの話で。
選択肢はユーザー側に与えられているのだから、それ以上は要らんだろ。
637デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 09:15:07.55ID:D96wT16B0638デフォルトの名無しさん (ワッチョイ 1be7-1eaZ)
2018/05/12(土) 09:18:40.30ID:kx3qluwG0 とりあえずスクリプト言語やC#で書く→速くしたい所をC++で書く→もっと速くしたい所をCやasmで書く
これが正解
どれかにこだわって対立させて排他するのはアホ
これが正解
どれかにこだわって対立させて排他するのはアホ
639デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 09:26:19.92ID:PbE4ojLD0 >>638
同意。
若い奴が統一言語「○○だけ勉強すれば全ておk」を求めるのは自然だが、
そうなっていないのは理由があって、つまりは手抜きと実行効率(速度)の兼ね合いだ。
一時期Cが統一言語だったが、それは他言語がゴミだったから(対抗馬がLisp)であって、
C++で再統一されることはないよ。特に今のC++では。
同意。
若い奴が統一言語「○○だけ勉強すれば全ておk」を求めるのは自然だが、
そうなっていないのは理由があって、つまりは手抜きと実行効率(速度)の兼ね合いだ。
一時期Cが統一言語だったが、それは他言語がゴミだったから(対抗馬がLisp)であって、
C++で再統一されることはないよ。特に今のC++では。
640デフォルトの名無しさん (アウアウウー Sa89-5o/y)
2018/05/12(土) 09:31:37.48ID:vhGL8v7ea641デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 09:56:03.80ID:QiJLTR+Nd642デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 10:05:55.31ID:QiJLTR+Nd >>636
CやC++に関わらず専用なコードは汎用に比べて高速コンパクトに出来る事がある
つまり、
void*で作って全てのコンテナサイズ(型)同一コードよりも型ごとにコードを作る方が速いことがある
C++のコンテナは全て専用コードなので
コードの肥大化と引き換えに微妙に速いかもしれない
コードの肥大化によってキャッシュミスして遅い可能性もあるけど
CやC++に関わらず専用なコードは汎用に比べて高速コンパクトに出来る事がある
つまり、
void*で作って全てのコンテナサイズ(型)同一コードよりも型ごとにコードを作る方が速いことがある
C++のコンテナは全て専用コードなので
コードの肥大化と引き換えに微妙に速いかもしれない
コードの肥大化によってキャッシュミスして遅い可能性もあるけど
643デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 11:33:41.32ID:VFvkGYoW0644デフォルトの名無しさん (ブーイモ MM43-/P3g)
2018/05/12(土) 11:35:17.48ID:tcCubJZ8M >>632
>すでに壊してるのだから
一体どこからそんな主張を読み取ったんだ?
勝手に人の主張を捏造せずに、ちゃんと質問に答えてくれないか?
あと、void*使わなくても、生成時に型サイズを受け取る方法もある。
汎用コンテナ作るのにdefineで型定義なんてするわけないだろう。
>すでに壊してるのだから
一体どこからそんな主張を読み取ったんだ?
勝手に人の主張を捏造せずに、ちゃんと質問に答えてくれないか?
あと、void*使わなくても、生成時に型サイズを受け取る方法もある。
汎用コンテナ作るのにdefineで型定義なんてするわけないだろう。
645デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 11:39:23.77ID:D96wT16B0646デフォルトの名無しさん
2018/05/12(土) 11:44:45.24647デフォルトの名無しさん (ブーイモ MM43-/P3g)
2018/05/12(土) 11:48:55.40ID:tcCubJZ8M648デフォルトの名無しさん (アウアウウー Sa89-bFqk)
2018/05/12(土) 11:52:21.18ID:My8LWy2ka ふぁいなるふぁんたじぃ?
649デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/12(土) 11:59:59.40ID:FtdYwxfb0 前輪駆動車じゃない?
650デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 12:14:05.61ID:D96wT16B0 255
651デフォルトの名無しさん (アウアウウー Sa89-bFqk)
2018/05/12(土) 12:31:23.28ID:My8LWy2ka -1
652デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 12:40:45.91ID:QiJLTR+Nd 汎用バイナリ < 汎用コード専用バイナリ < 専用コード
速度的にはこう
速度が非常に重要であれば
CだろうがC++だろうが専用コードを書くのが一番
速度的にはこう
速度が非常に重要であれば
CだろうがC++だろうが専用コードを書くのが一番
653デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 12:42:10.49ID:PbE4ojLD0654デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 12:44:50.30ID:D96wT16B0655デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 12:49:50.14ID:QiJLTR+Nd656デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 12:50:14.86ID:VFvkGYoW0 >>653
> 間接参照を抜ける場合とかだろ。
それC++のまま書き換えればいいだけ
> 逆にCよりもC++の方が速くなるコードの方があり得ないと思うが。
そんな主張はしてない
> 実際にC++はCより遅いってのは事実だし。
だからどんなケースなんだよ
STLとか使いまくって遅いとかなら使わないように書き換えればいいだけだろ
> 間接参照を抜ける場合とかだろ。
それC++のまま書き換えればいいだけ
> 逆にCよりもC++の方が速くなるコードの方があり得ないと思うが。
そんな主張はしてない
> 実際にC++はCより遅いってのは事実だし。
だからどんなケースなんだよ
STLとか使いまくって遅いとかなら使わないように書き換えればいいだけだろ
657デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 12:58:57.32ID:QiJLTR+Nd 厳密に言うと
C11の可変長配列はC++には無い
C++では例外処理を実現するために関数コールに微妙なオーバーヘッドがある場合がある
って感じでCの方が有利な事がある
どちらもガシガシに最適化した場合の話
C11の可変長配列はC++には無い
C++では例外処理を実現するために関数コールに微妙なオーバーヘッドがある場合がある
って感じでCの方が有利な事がある
どちらもガシガシに最適化した場合の話
658デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:05:00.64ID:QiJLTR+Nd x86-32
例外処理を有効にすると
関数コールに微妙なオーバーヘッドが加わる
x86-64
例外処理の為のオーバーヘッドは無い
その代わり例外発生時の処理は非常に遅い
Cの可変長配列のような、スタックに可変長サイズを確保する手段はC++には無い
当然ダイナミックなメモリアロケートよりはスタックに確保した方が速い
ただし実際にはあまり使われていないと思われる
例外処理を有効にすると
関数コールに微妙なオーバーヘッドが加わる
x86-64
例外処理の為のオーバーヘッドは無い
その代わり例外発生時の処理は非常に遅い
Cの可変長配列のような、スタックに可変長サイズを確保する手段はC++には無い
当然ダイナミックなメモリアロケートよりはスタックに確保した方が速い
ただし実際にはあまり使われていないと思われる
659デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:09:56.56ID:PbE4ojLD0660デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:11:52.26ID:PbE4ojLD0 >>658
> x86-64
> 例外処理の為のオーバーヘッドは無い
> その代わり例外発生時の処理は非常に遅い
これマジ?
煽りじゃなくて仕組みを知りたいから、キーワードかURLくれ。
こちらでググって確認する。
> x86-64
> 例外処理の為のオーバーヘッドは無い
> その代わり例外発生時の処理は非常に遅い
これマジ?
煽りじゃなくて仕組みを知りたいから、キーワードかURLくれ。
こちらでググって確認する。
661デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:28:22.55ID:QiJLTR+Nd 自分でディスアセンブルしたり
バイナリ比較したり実測してわかったことで
仕組みがまとめて書いてあるような所は知らない
バイナリ比較したり実測してわかったことで
仕組みがまとめて書いてあるような所は知らない
662デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:31:21.41ID:PbE4ojLD0 >>656
> だからどんなケースなんだよ
探してやったぞ。
> 実験によれば 6-13% の実行時間が単なる関数のディスパッチに用いられ、オーバーヘッドは場合によって 50% に達する[1]。
> https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E9%96%A2%E6%95%B0%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB
C++は動的な型の変更はなしなので、コンパイル時に対象関数は確定するだろ。それが仮想関数であってもね。
だからvtblを用いた実装自体がコンパイラの単純さを採って、実行速度を捨ててる。
JavaScriptみたいに、実行時に型を変更してしまえる言語ではないのだから、
型毎にテーブルを持つこと自体が冗長で、
テンプレートみたいに、仮想関数が上書きされた毎時点で平面的に展開し、直接それを呼ぶ実装も出来るんだよ。
勿論オブジェクトコードは膨らむが。
Cの場合は、どちらでやるにしても「自前で」実装するしかない。だから当然、選べる。
C++の場合は、選べないでしょ。一般的にvtblの実装になる。(コンパイラの都合だが)
> だからどんなケースなんだよ
探してやったぞ。
> 実験によれば 6-13% の実行時間が単なる関数のディスパッチに用いられ、オーバーヘッドは場合によって 50% に達する[1]。
> https://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E9%96%A2%E6%95%B0%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB
C++は動的な型の変更はなしなので、コンパイル時に対象関数は確定するだろ。それが仮想関数であってもね。
だからvtblを用いた実装自体がコンパイラの単純さを採って、実行速度を捨ててる。
JavaScriptみたいに、実行時に型を変更してしまえる言語ではないのだから、
型毎にテーブルを持つこと自体が冗長で、
テンプレートみたいに、仮想関数が上書きされた毎時点で平面的に展開し、直接それを呼ぶ実装も出来るんだよ。
勿論オブジェクトコードは膨らむが。
Cの場合は、どちらでやるにしても「自前で」実装するしかない。だから当然、選べる。
C++の場合は、選べないでしょ。一般的にvtblの実装になる。(コンパイラの都合だが)
663デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:35:45.30ID:QiJLTR+Nd C/C++で基本同じ結果となるコードが書ける
同じ結果となるコードを書けば結果は同じ
ってだけで
当然違う結果となるコードを比べれば違う結果になる
当たり前
同じ結果となるコードを書けば結果は同じ
ってだけで
当然違う結果となるコードを比べれば違う結果になる
当たり前
664デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:36:37.92ID:PbE4ojLD0665デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:38:15.87ID:QiJLTR+Nd クラス関数はthisを第一パラメータとして渡してるだけで、これは構造体でも同じことが出来る
virtual関数は関数ポインタテーブルへのポインタを持ってるだけ
同じことは当然Cの構造体でも出来る
テンプレートは型ごとにコードを書くのと同じ
virtual関数は関数ポインタテーブルへのポインタを持ってるだけ
同じことは当然Cの構造体でも出来る
テンプレートは型ごとにコードを書くのと同じ
666デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:39:04.83ID:PbE4ojLD0667デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:41:20.71ID:QiJLTR+Nd668デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:42:51.66ID:QiJLTR+Nd >>666
君独自の定義とか持ち出さないでくれ
君独自の定義とか持ち出さないでくれ
669デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:44:31.67ID:PbE4ojLD0 >>665
> virtual関数は関数ポインタテーブルへのポインタを持ってるだけ
> 同じことは当然Cの構造体でも出来る
Cでやる場合は、関数ポインタを引数で渡すことも出来るんだよ。
(勿論C++でも出来るが、クラスを使う意味が無くなるから普通はやらない)
この場合、間接参照が抜ける分だけ速くなる。
(実際はメモリアクセス1個よりはキャッシュを壊すことの影響の方が大きいとは思うが)
> virtual関数は関数ポインタテーブルへのポインタを持ってるだけ
> 同じことは当然Cの構造体でも出来る
Cでやる場合は、関数ポインタを引数で渡すことも出来るんだよ。
(勿論C++でも出来るが、クラスを使う意味が無くなるから普通はやらない)
この場合、間接参照が抜ける分だけ速くなる。
(実際はメモリアクセス1個よりはキャッシュを壊すことの影響の方が大きいとは思うが)
670デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:45:03.28ID:QiJLTR+Nd C++独自の機能を使うとCより常に遅い?
それは嘘だな
それは嘘だな
671デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:47:32.05ID:QiJLTR+Nd672デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 13:49:15.64ID:PbE4ojLD0673デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:51:18.48ID:QiJLTR+Nd674デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 13:53:21.45ID:QiJLTR+Nd675デフォルトの名無しさん
2018/05/12(土) 13:53:48.97 >>658って単に32bitプログラムを64bit CPUで走らせてオーバーヘッドがーって言ってるんじゃね?
676デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:01:29.48ID:PbE4ojLD0 >>674
君は理解できてないようだから、定義を確認しておこう。
ただしこれは一般的な解釈であり、おそらくこのスレの住民は共有してる。
・テンプレート、クラス構文、スマポ等、
C++コンパイラではないと通らない機能を使ったコードを、C++のコードという。
・その他、関数ポインタ等、Cコンパイラでも通る機能のみで書かれたコードを、Cのコードという。
> 一般に、カーネルモジュールをC++で設計するやつは、以下のいずれかだ。
>
> (a) 好んで厄介事に巻き込まれたい者
> (b) 自分が書いているのは実はCだと気がついていないC++バカ
> (c) 授業でそういう課題を与えられた者
>
> (d)を付け加えるなら好きにしてくれ。
>
> Linus
> https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
君は多分(b)だね。
今の話題はC++のコードとCのコードの速度比較ということでよろしく。
>>673
> C++で最適化に行き詰まった時に
> わざわざコンパイラをCに変えて最適化する事なんてないから
そんな話は誰もしてない。
勿論その場合はCのコードに変更し、C++コンパイラを使うに決まっている。
じゃないと他の部分が通らないだろ。
君の定義は、C++コンパイラを使っていればどういう書き方であってC++ということだったのか。
なら話は噛み合わないさ。
君は理解できてないようだから、定義を確認しておこう。
ただしこれは一般的な解釈であり、おそらくこのスレの住民は共有してる。
・テンプレート、クラス構文、スマポ等、
C++コンパイラではないと通らない機能を使ったコードを、C++のコードという。
・その他、関数ポインタ等、Cコンパイラでも通る機能のみで書かれたコードを、Cのコードという。
> 一般に、カーネルモジュールをC++で設計するやつは、以下のいずれかだ。
>
> (a) 好んで厄介事に巻き込まれたい者
> (b) 自分が書いているのは実はCだと気がついていないC++バカ
> (c) 授業でそういう課題を与えられた者
>
> (d)を付け加えるなら好きにしてくれ。
>
> Linus
> https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
君は多分(b)だね。
今の話題はC++のコードとCのコードの速度比較ということでよろしく。
>>673
> C++で最適化に行き詰まった時に
> わざわざコンパイラをCに変えて最適化する事なんてないから
そんな話は誰もしてない。
勿論その場合はCのコードに変更し、C++コンパイラを使うに決まっている。
じゃないと他の部分が通らないだろ。
君の定義は、C++コンパイラを使っていればどういう書き方であってC++ということだったのか。
なら話は噛み合わないさ。
677デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:05:34.23ID:D96wT16B0 #define SIZE 100000000
long long array[SIZE];
int comp(void const* lhs, void const* rhs)
{
if(*(long long*)lhs < *(long long*)rhs) return -1;
if(*(long long*)lhs > *(long long*)rhs) return +1;
return 0;
}
int main(void)
{
clock_t t0 = clock();
qsort(array, SIZE, sizeof(long long), comp);
clock_t t1 = clock();
printf("%g[sec]\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //2.288[sec]
}
long long array[SIZE];
int comp(void const* lhs, void const* rhs)
{
if(*(long long*)lhs < *(long long*)rhs) return -1;
if(*(long long*)lhs > *(long long*)rhs) return +1;
return 0;
}
int main(void)
{
clock_t t0 = clock();
qsort(array, SIZE, sizeof(long long), comp);
clock_t t1 = clock();
printf("%g[sec]\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //2.288[sec]
}
678デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:06:21.60ID:D96wT16B0 #define SIZE 100000000
long long array[SIZE];
int main(void)
{
clock_t t0 = clock();
std::sort(array, array + SIZE, std::less<long long>());
clock_t t1 = clock();
printf("%g[sec]\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //8.245[sec] ・・・あれ? 何だこりゃ
}
long long array[SIZE];
int main(void)
{
clock_t t0 = clock();
std::sort(array, array + SIZE, std::less<long long>());
clock_t t1 = clock();
printf("%g[sec]\n", (double)(t1 - t0) / CLOCKS_PER_SEC); //8.245[sec] ・・・あれ? 何だこりゃ
}
679デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 14:07:22.82ID:VFvkGYoW0680デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:14:29.71ID:PbE4ojLD0681デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 14:14:45.58ID:VFvkGYoW0 >>676
> ・その他、関数ポインタ等、Cコンパイラでも通る機能のみで書かれたコードを、Cのコードという。
可変長配列とか使ってないならC++のコードでもある
つまりC++の範疇で書き直してるだけ
って言うのが大方の人の解釈だと思うが
> ・その他、関数ポインタ等、Cコンパイラでも通る機能のみで書かれたコードを、Cのコードという。
可変長配列とか使ってないならC++のコードでもある
つまりC++の範疇で書き直してるだけ
って言うのが大方の人の解釈だと思うが
682デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:18:31.88ID:D96wT16B0683デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:20:49.93ID:QiJLTR+Nd684デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:22:26.74ID:PbE4ojLD0685デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:26:21.88ID:D96wT16B0 >>676
たとえばヘッダファイルなんか、同一のファイルを
Cコンパイラに入力したり
C++コンパイラに入力したり
ってこともあるよな
内容には無関係で単に
Cコンパイラに入力したらCのコードで
C++コンパイラに入力したらC++のコードだろ
最適化の内容だってrestrictのように
CとC++で違ってくる可能性はあるしな
たとえばヘッダファイルなんか、同一のファイルを
Cコンパイラに入力したり
C++コンパイラに入力したり
ってこともあるよな
内容には無関係で単に
Cコンパイラに入力したらCのコードで
C++コンパイラに入力したらC++のコードだろ
最適化の内容だってrestrictのように
CとC++で違ってくる可能性はあるしな
686デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:27:02.49ID:PbE4ojLD0 >>682
最適化の掛け忘れでは?
Cの方はほぼ最適コードだが、(メモリアクセス減らして一時変数に取れとかその程度)
C++の方は最適化無しだとトンデモコードが出てくるが、
最適化でそれを消すからおkというノリだったと思ったぞ。
最適化無し同士の比較は意味がない。最大最適化同士の比較やってみそ。
最適化の掛け忘れでは?
Cの方はほぼ最適コードだが、(メモリアクセス減らして一時変数に取れとかその程度)
C++の方は最適化無しだとトンデモコードが出てくるが、
最適化でそれを消すからおkというノリだったと思ったぞ。
最適化無し同士の比較は意味がない。最大最適化同士の比較やってみそ。
687デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:27:22.97ID:QiJLTR+Nd 使うモジュールの差を言語で言うから話が紛れる
で、
君の定義であるごく一般的な記述を行った場合の話であれば
C++の方が速いこともあるしCの方が速いこともある
C++はテンプレートによって専用のコードをたくさん作る
当然汎用バイナリよりも専用バイナリの方が最適化がかかりやすいし、
変数よりも即値の方が速いことも多い
C++例外処理も有効で、
これによって処理が速くなる場合がある
で、
君の定義であるごく一般的な記述を行った場合の話であれば
C++の方が速いこともあるしCの方が速いこともある
C++はテンプレートによって専用のコードをたくさん作る
当然汎用バイナリよりも専用バイナリの方が最適化がかかりやすいし、
変数よりも即値の方が速いことも多い
C++例外処理も有効で、
これによって処理が速くなる場合がある
688デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:27:42.28ID:D96wT16B0 >>686
gcc unko.c -O3でやってる
gcc unko.c -O3でやってる
689デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:29:31.07ID:PbE4ojLD0690デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:30:30.03ID:QiJLTR+Nd691デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:35:18.35ID:PbE4ojLD0 >>687
> 君の定義であるごく一般的な記述を行った場合の話であれば
> C++の方が速いこともあるしCの方が速いこともある
ねーよ。
実例挙げてみ?
それって単なるコンパイラの適性であって、コード自体の速度ではないだろ。
C++とCの本質的な速度差ってのは絶対にひっくり返らないものであって、
例えば、スマポを使っている限り参照ポインタを管理する分だけ遅くなる、というもの。
コンパイラがどう進化しても、「0」「ADDまたはDEC命令」の差はひっくり返らないんだよ。
> C++例外処理も有効で、
> これによって処理が速くなる場合がある
ねーよ。Cは最初から全部noexceptだ。
> 君の定義であるごく一般的な記述を行った場合の話であれば
> C++の方が速いこともあるしCの方が速いこともある
ねーよ。
実例挙げてみ?
それって単なるコンパイラの適性であって、コード自体の速度ではないだろ。
C++とCの本質的な速度差ってのは絶対にひっくり返らないものであって、
例えば、スマポを使っている限り参照ポインタを管理する分だけ遅くなる、というもの。
コンパイラがどう進化しても、「0」「ADDまたはDEC命令」の差はひっくり返らないんだよ。
> C++例外処理も有効で、
> これによって処理が速くなる場合がある
ねーよ。Cは最初から全部noexceptだ。
692デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:35:49.71ID:QiJLTR+Nd ソートって
メモリサイズ
比較コスト
コピーコスト
キャッシュサイズ
...
こんなんで結果(時間)が大きく異なるんだよね
クイックソートだと
データの並び順でもたまたま選んだピボット値でも変わる
1個の場合を比較してもあまり意味が無いぞ
メモリサイズ
比較コスト
コピーコスト
キャッシュサイズ
...
こんなんで結果(時間)が大きく異なるんだよね
クイックソートだと
データの並び順でもたまたま選んだピボット値でも変わる
1個の場合を比較してもあまり意味が無いぞ
693デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:36:05.87ID:D96wT16B0694デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:36:46.83ID:D96wT16B0695デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:37:45.07ID:PbE4ojLD0696デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:37:57.15ID:D96wT16B0 >>689
ん? なんで?
ん? なんで?
697デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:44:25.97ID:PbE4ojLD0 >>693
それさ、以下の3条件でやってみ。
1) Cのコード(677)を、Cコンパイラ
2) Cのコード(677)を、C++コンパイラ ←追加
3) C++のコー(678)を、C++コンパイラ
Cコンパイラってポインタ周りは最適化をかけないから、多分、
速度差はコンパイラ起因であって、コード起因では無いと思う。
それさ、以下の3条件でやってみ。
1) Cのコード(677)を、Cコンパイラ
2) Cのコード(677)を、C++コンパイラ ←追加
3) C++のコー(678)を、C++コンパイラ
Cコンパイラってポインタ周りは最適化をかけないから、多分、
速度差はコンパイラ起因であって、コード起因では無いと思う。
698デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:45:53.71ID:PbE4ojLD0 >>696
> (b) 自分が書いているのは実はCだと気がついていないC++バカ
> https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
君の定義が正しければ、上記(b)の定義が出来なくなるだろ。
> (b) 自分が書いているのは実はCだと気がついていないC++バカ
> https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html
君の定義が正しければ、上記(b)の定義が出来なくなるだろ。
699デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:46:34.72ID:QiJLTR+Nd >>691
C++が遅くなる例だけあげてC++が遅いって言ってもねえ
C++が速い例
double p = 1.;
int n;
for (n = 1 ; ; n++){
p *= n;
}
C++だと例外処理をつかって、いつオーバーフローするかわかるんだけど
例外を使わないとどういうコードになるかねえ?
---
Cで普通に汎用vectorを作るとすると
普通は汎用バイナリで作ることになるんで
関数ポインタを経由する事になっちゃうけど
C++のテンプレートだとだとそれぞれ専用なんで
関数コールが速いよね
アドレス計算も即値の乗算だから色々なテクニックが使える
C++が遅くなる例だけあげてC++が遅いって言ってもねえ
C++が速い例
double p = 1.;
int n;
for (n = 1 ; ; n++){
p *= n;
}
C++だと例外処理をつかって、いつオーバーフローするかわかるんだけど
例外を使わないとどういうコードになるかねえ?
---
Cで普通に汎用vectorを作るとすると
普通は汎用バイナリで作ることになるんで
関数ポインタを経由する事になっちゃうけど
C++のテンプレートだとだとそれぞれ専用なんで
関数コールが速いよね
アドレス計算も即値の乗算だから色々なテクニックが使える
700デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 14:47:13.55ID:D96wT16B0 わりい、ちょっと離席する
701デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:49:16.03ID:PbE4ojLD0702デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:51:30.31ID:QiJLTR+Nd C++だとコンテナを使ってまともなソートを簡単に書けるけど
Cだと面倒だからバカソート
ってのも普通にある
要素数が少なければ意図的にやったりもする
一般的なコードではCの方が速い事の方が多い
ってくらいの主張にしとけば良いものを
強い主張をしちゃうから
Cだと面倒だからバカソート
ってのも普通にある
要素数が少なければ意図的にやったりもする
一般的なコードではCの方が速い事の方が多い
ってくらいの主張にしとけば良いものを
強い主張をしちゃうから
703デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 14:53:13.25ID:QiJLTR+Nd704デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 14:55:06.52ID:VFvkGYoW0705デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 14:56:22.02ID:PbE4ojLD0 >>699
おっとすまん、ポインタアクセスでのメモリオーバーフローと勘違いしてた。
doubleの無限大の例外って事?
俺はそっちには詳しくないが、浮動小数点例外をソフトウェアで検出するのなら同じだし、
ハードウェアでの検出なら割り込みがかかるだけで、速度的にはこれまた同じだが。
vectorについては完全に君の勘違いだぞ。
Cではそれぞれ専用の物を作るのが基本であり、それを一つにかけるようにしたのがテンプレートだ。
多分、理解の仕方が逆だ。
おっとすまん、ポインタアクセスでのメモリオーバーフローと勘違いしてた。
doubleの無限大の例外って事?
俺はそっちには詳しくないが、浮動小数点例外をソフトウェアで検出するのなら同じだし、
ハードウェアでの検出なら割り込みがかかるだけで、速度的にはこれまた同じだが。
vectorについては完全に君の勘違いだぞ。
Cではそれぞれ専用の物を作るのが基本であり、それを一つにかけるようにしたのがテンプレートだ。
多分、理解の仕方が逆だ。
706デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 14:57:30.76ID:VFvkGYoW0707デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 15:04:23.09ID:VFvkGYoW0 >>705
> ハードウェアでの検出なら割り込みがかかるだけで、速度的にはこれまた同じだが。
Cだと言語の範疇ではその割り込みを処理できない
なのでif文とかでオーバーフローするのを検出するとかが必要
って話だろ
> ハードウェアでの検出なら割り込みがかかるだけで、速度的にはこれまた同じだが。
Cだと言語の範疇ではその割り込みを処理できない
なのでif文とかでオーバーフローするのを検出するとかが必要
って話だろ
708デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 15:07:59.44ID:PbE4ojLD0709デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 15:15:00.22ID:sI+Q43v80710デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 15:16:02.69ID:sI+Q43v80 IDが変わってしまった
まあそんな事はどうでもいいか
まあそんな事はどうでもいいか
711デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 15:18:43.30ID:PbE4ojLD0 ちなみに速度比較についてはいろんな人が様々やってるけど、
俺的にまあ公平だと思えるのはこれだね。俺の体感ともだいたい一致する。
おれはC++は1.1-1.3位かと思っているけど。
> C 1.00
> C++ 1.56
> Java 1.89
> C# 3.14
> https://jaxenter.com/wp-content/uploads/2017/09/energy-efficient-languages-768x689.png
> https://jaxenter.com/energy-efficient-programming-languages-137264.html
C++の機能をバリバリに使ったら、そりゃJavaと大して変わらんだろ、ということになるし。
スマポってのは良くできたGCとコストはほぼ同じだし。(GCは全自動なだけ)
Javaは以前は3程度だったが、ゴリゴリチューニングしてきているらしい。
俺的にまあ公平だと思えるのはこれだね。俺の体感ともだいたい一致する。
おれはC++は1.1-1.3位かと思っているけど。
> C 1.00
> C++ 1.56
> Java 1.89
> C# 3.14
> https://jaxenter.com/wp-content/uploads/2017/09/energy-efficient-languages-768x689.png
> https://jaxenter.com/energy-efficient-programming-languages-137264.html
C++の機能をバリバリに使ったら、そりゃJavaと大して変わらんだろ、ということになるし。
スマポってのは良くできたGCとコストはほぼ同じだし。(GCは全自動なだけ)
Javaは以前は3程度だったが、ゴリゴリチューニングしてきているらしい。
712デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 15:19:13.36ID:sI+Q43v80713デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 15:19:20.53ID:PbE4ojLD0 >>709
僕は知りません、まで読んだ。
僕は知りません、まで読んだ。
714デフォルトの名無しさん
2018/05/12(土) 15:20:34.21 >>708
なんで喧嘩腰なのかがよくわからないけど、
C言語では「n <= DBL_MAX」というif文が必要ってことだろ?
double p = 1.;
int n;
for (n = 1 ; n < DBL_MAX; n++){
p *= n;
}
なんで喧嘩腰なのかがよくわからないけど、
C言語では「n <= DBL_MAX」というif文が必要ってことだろ?
double p = 1.;
int n;
for (n = 1 ; n < DBL_MAX; n++){
p *= n;
}
715デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 15:23:37.01ID:PbE4ojLD0716デフォルトの名無しさん
2018/05/12(土) 15:33:27.39 >>715
なんでもない、忘れて><
なんでもない、忘れて><
717デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 15:48:51.69ID:PbE4ojLD0 >>716
通じたようで何より。
だからオーバーフローの検出はソフトウェアでは辛くて、通常はハードウェアのはずだ。
そしてその場合は割り込みとなり、Cの場合は割り込みハンドラにコードを書くことになる。
C++の場合は『そこから例外処理ルーチンまで引っ張ってきてくれるコード』をコンパイラが用意し、
ユーザーのcatchコードを実行する。つまり、上記『』内コードでラップされてる分だけ遅い。
(実際にはラップだけではなくスタックウォークも行うから相当遅いはずだが)
なんだが、実際俺はゼロ割例外しか見てないからオーバーフローについてはよくは知らん。
ハードウェア的には上記の動作になる。
一般的にはオーバーフロー例外は出ない環境(無限大に貼り付けるだけ)で使うのではないかと。
Cではアホみたいにゼロ割チェックやってるよ。
これはC++でも同じだと思うが、C++erはやらないのが作法なのか?
とはいえ、ゼロ割はCMP+Brachであり、通常は分岐しないから、x86ではほぼゼロコストだ。
割り込みは関数呼び出し自体が遅くなるから、結局これもCの方が速いはずだが。
通じたようで何より。
だからオーバーフローの検出はソフトウェアでは辛くて、通常はハードウェアのはずだ。
そしてその場合は割り込みとなり、Cの場合は割り込みハンドラにコードを書くことになる。
C++の場合は『そこから例外処理ルーチンまで引っ張ってきてくれるコード』をコンパイラが用意し、
ユーザーのcatchコードを実行する。つまり、上記『』内コードでラップされてる分だけ遅い。
(実際にはラップだけではなくスタックウォークも行うから相当遅いはずだが)
なんだが、実際俺はゼロ割例外しか見てないからオーバーフローについてはよくは知らん。
ハードウェア的には上記の動作になる。
一般的にはオーバーフロー例外は出ない環境(無限大に貼り付けるだけ)で使うのではないかと。
Cではアホみたいにゼロ割チェックやってるよ。
これはC++でも同じだと思うが、C++erはやらないのが作法なのか?
とはいえ、ゼロ割はCMP+Brachであり、通常は分岐しないから、x86ではほぼゼロコストだ。
割り込みは関数呼び出し自体が遅くなるから、結局これもCの方が速いはずだが。
718デフォルトの名無しさん (ドコグロ MM01-pJ79)
2018/05/12(土) 16:03:54.80ID:68o7JYmcM719デフォルトの名無しさん (ワッチョイ e3cb-/P3g)
2018/05/12(土) 16:11:14.40ID:eFTG6CfX0 overflowてexception吐くんだっけか
720デフォルトの名無しさん (ドコグロ MM01-pJ79)
2018/05/12(土) 16:35:26.68ID:68o7JYmcM722デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 17:14:24.19ID:D96wT16B0 unsigned long long array[100000000];
↑
ここに同じファイルから乱数を読み込んで比較してみた
clのオプションは /Ox /arch:AVX
gccのオプションは -O3 -mtune=sandybridge
qsort
cl 27.171[sec]
gcc 26.139[sec]
std::sort
↑
ここに同じファイルから乱数を読み込んで比較してみた
clのオプションは /Ox /arch:AVX
gccのオプションは -O3 -mtune=sandybridge
qsort
cl 27.171[sec]
gcc 26.139[sec]
std::sort
723デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 17:16:00.99ID:D96wT16B0 途中で書き込まれてしまった
unsigned long long array[100000000];
↑
ここに同じファイルから乱数を読み込んで比較してみた
clのオプションは /Ox /arch:AVX
gccのオプションは -O3 -mtune=sandybridge
qsort
cl 27.171[sec]
gcc 26.139[sec]
std::sort
cl 13.456[sec]
gcc 9.103[sec]
おまけ
std::sortにstd::execution::parを指定してみた
cl 3.288[sec]
gcc 未実装
unsigned long long array[100000000];
↑
ここに同じファイルから乱数を読み込んで比較してみた
clのオプションは /Ox /arch:AVX
gccのオプションは -O3 -mtune=sandybridge
qsort
cl 27.171[sec]
gcc 26.139[sec]
std::sort
cl 13.456[sec]
gcc 9.103[sec]
おまけ
std::sortにstd::execution::parを指定してみた
cl 3.288[sec]
gcc 未実装
724デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 17:16:40.49ID:D96wT16B0 >>690が正解だったね
725デフォルトの名無しさん (ワッチョイ e358-k37M)
2018/05/12(土) 17:49:15.49ID:D96wT16B0726デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 18:15:21.20ID:VFvkGYoW0728デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 18:40:33.53ID:PbE4ojLD0729デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 18:42:16.14ID:VFvkGYoW0 >>729
inf も NaN も浮動小数点表現の中にあるので「オーバーフロー」と呼びにくい、と思っています、まあ人それぞれ
inf も NaN も浮動小数点表現の中にあるので「オーバーフロー」と呼びにくい、と思っています、まあ人それぞれ
731デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 19:04:56.38ID:VFvkGYoW0732デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/12(土) 19:24:22.69ID:yANyZ1HYd733デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/12(土) 19:29:38.17ID:VFvkGYoW0 >>728
お前の変な世間はどうでもいい
お前の変な世間はどうでもいい
734デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 19:48:04.17ID:PbE4ojLD0 >>732
> C++は元々上位互換を目標に作られた物だ
そうだ。そしてだからこそ、スタイルで区別されるんだよ。
元々C++はCの完全上位互換だった。
だから君らの定義なら、C++が登場したときから全てのCは消滅し、C++になっているはずだろ。
実際はそうじゃない。
「○○のコードはCで書かれています」
「○○のコードはC++で書かれています」というのは、
世間では俺の言った定義(>>676)で使われてる。
その後、CとC++が仕様的に分離してしまったから、
今現在はCコンパイラで通るコードがC++コンパイラで通らないケースが存在する。
だから今は明確に「どちらのコンパイラを使うか」を想定しておく必要があるが、
それもコーナーケースで、
大半の「Cのコード」はC++コンパイラでもそのまま通る。
お前らがC++信者でC++の範囲を広く取りたいのは分かるが、世間はそうじゃない。
C++がCの仕様を全て取り込んだら、
お前らにとってはCは消滅、全てはC++になり、お前らは幸せになれるだろうさ。
ただ、その後も世間はCとC++を引き続き区別するだろうよ。
> C++は元々上位互換を目標に作られた物だ
そうだ。そしてだからこそ、スタイルで区別されるんだよ。
元々C++はCの完全上位互換だった。
だから君らの定義なら、C++が登場したときから全てのCは消滅し、C++になっているはずだろ。
実際はそうじゃない。
「○○のコードはCで書かれています」
「○○のコードはC++で書かれています」というのは、
世間では俺の言った定義(>>676)で使われてる。
その後、CとC++が仕様的に分離してしまったから、
今現在はCコンパイラで通るコードがC++コンパイラで通らないケースが存在する。
だから今は明確に「どちらのコンパイラを使うか」を想定しておく必要があるが、
それもコーナーケースで、
大半の「Cのコード」はC++コンパイラでもそのまま通る。
お前らがC++信者でC++の範囲を広く取りたいのは分かるが、世間はそうじゃない。
C++がCの仕様を全て取り込んだら、
お前らにとってはCは消滅、全てはC++になり、お前らは幸せになれるだろうさ。
ただ、その後も世間はCとC++を引き続き区別するだろうよ。
735デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 20:09:12.78ID:sI+Q43v80 お前用語の定義の説明とかどうでもいい
スタイルの意味ならスタイルと書け
スタイルの意味ならスタイルと書け
736デフォルトの名無しさん (スップ Sd03-lXkA)
2018/05/12(土) 20:09:24.63ID:D4Rf+0xLd >>734
それは嘘だなぁ
extern "C"が無いとCライクに見えるオブジェクトを吐かない事が常となっているC++(コンパイラ)について、いくらpure Cライクなコードを書いてもpure Cでないextern "C"を書かないとCライクに見えるオブジェクトは吐けないってそれはもうC++でしょう
他の内容にも誤りがあって君の世間ではCライクなコードであればCで書いたと宣言していいらしいけど、少しでも世間のOSSのコードを見て回れば良いよ
Cで書かれているのはCだから
それは嘘だなぁ
extern "C"が無いとCライクに見えるオブジェクトを吐かない事が常となっているC++(コンパイラ)について、いくらpure Cライクなコードを書いてもpure Cでないextern "C"を書かないとCライクに見えるオブジェクトは吐けないってそれはもうC++でしょう
他の内容にも誤りがあって君の世間ではCライクなコードであればCで書いたと宣言していいらしいけど、少しでも世間のOSSのコードを見て回れば良いよ
Cで書かれているのはCだから
737デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 20:30:38.36ID:PbE4ojLD0 お前らが誤解したままでいるのはお前らの自由だが、
お前らの定義だと、CとObjective-Cを区別できないだろ。
あれはCの完全上位互換で、Cコードそのまま食えるらしいからね。
お前らも少し考えれば自分で矛盾に気づけるはずだが。
お前らの定義だと、CとObjective-Cを区別できないだろ。
あれはCの完全上位互換で、Cコードそのまま食えるらしいからね。
お前らも少し考えれば自分で矛盾に気づけるはずだが。
738デフォルトの名無しさん (ブーイモ MM49-ZhOv)
2018/05/12(土) 20:58:42.38ID:cTj25fOrM739デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 21:57:33.16ID:PbE4ojLD0 ならもうちょっと分かりやすい説明をしてやる。
>>677-678について、お前らの定義では『コード』について議論できないだろ。
俺の定義では、677は「Cのコード」で、678は「C++のコード」だ。コンパイラに依らない。
お前らの定義では、678は明確に「C++のコード」だが、677については、
「Cコンパイラを通した場合、677はCのコード」
「C++コンパイラを通した場合、677はC++のコード」
になってしまうだろ。
それだと、CとC++の『コード』の速度比較自体が定義できないだろ。
677をCコンパイラを通した場合とC++コンパイラを通した場合の速度差は、
「コードの差」ではなく、「コンパイラの差」なんだよ。
当たり前だろ。
というか、C++erもここまでレベルが落ちたのか。世も末だな。
>>677-678について、お前らの定義では『コード』について議論できないだろ。
俺の定義では、677は「Cのコード」で、678は「C++のコード」だ。コンパイラに依らない。
お前らの定義では、678は明確に「C++のコード」だが、677については、
「Cコンパイラを通した場合、677はCのコード」
「C++コンパイラを通した場合、677はC++のコード」
になってしまうだろ。
それだと、CとC++の『コード』の速度比較自体が定義できないだろ。
677をCコンパイラを通した場合とC++コンパイラを通した場合の速度差は、
「コードの差」ではなく、「コンパイラの差」なんだよ。
当たり前だろ。
というか、C++erもここまでレベルが落ちたのか。世も末だな。
740デフォルトの名無しさん (ワイモマー MM43-uCqk)
2018/05/12(土) 22:16:57.78ID:DXsEIRbfM std::filesystemで片方のスレッドでファイルを出力し
もう片方のスレッドでファイルが存在していたら読み込むというプログラムを書いた場合
出力中に存在すると判定されて読み込んでしまいそうですが、
そんなことないでしょうか?
もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして
判定する以外の方法はあるでしょうか?
もう片方のスレッドでファイルが存在していたら読み込むというプログラムを書いた場合
出力中に存在すると判定されて読み込んでしまいそうですが、
そんなことないでしょうか?
もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして
判定する以外の方法はあるでしょうか?
741デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 23:29:24.63ID:sI+Q43v80 >>739
お前が考えた定義とかどうでも良いって言ってるの
お前が考えた定義とかどうでも良いって言ってるの
742デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/12(土) 23:53:40.44ID:PbE4ojLD0 というか何でお前らそんなに必死なんだ?
俺の言ってる定義が世間一般の定義だよ。
そうじゃなきゃ『コード』の善し悪しの議論が出来ないだろ。自明だと思うが。
繰り返すが、C++がCよりも遅いのは事実で、それもググレばいくらでも出てくるだろ。
ただこれはC++そのものよりもオブジェクト指向の弊害だが。
http://chrismdp.com/2015/04/how-i-doubled-the-speed-of-my-game-by-giving-up-on-c-plus-plus/
https://www.quora.com/Why-is-object-oriented-programming-OOP-slower-than-procedural
逆に言えば、C++の機能をふんだんに使ったとして、Javaに対する速度優位がどれだけあると思ってるの?
C++で世界が再統一されることは、今のC++の仕様/方向性ではあり得ない。C++ではCを殺しきれない。
だからRustが生まれた。
>>711の表を信じるなら、RustはCの代替としてはC++以上に上手く行ってる。
俺の言ってる定義が世間一般の定義だよ。
そうじゃなきゃ『コード』の善し悪しの議論が出来ないだろ。自明だと思うが。
繰り返すが、C++がCよりも遅いのは事実で、それもググレばいくらでも出てくるだろ。
ただこれはC++そのものよりもオブジェクト指向の弊害だが。
http://chrismdp.com/2015/04/how-i-doubled-the-speed-of-my-game-by-giving-up-on-c-plus-plus/
https://www.quora.com/Why-is-object-oriented-programming-OOP-slower-than-procedural
逆に言えば、C++の機能をふんだんに使ったとして、Javaに対する速度優位がどれだけあると思ってるの?
C++で世界が再統一されることは、今のC++の仕様/方向性ではあり得ない。C++ではCを殺しきれない。
だからRustが生まれた。
>>711の表を信じるなら、RustはCの代替としてはC++以上に上手く行ってる。
743デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/12(土) 23:56:27.27ID:sI+Q43v80 お前の定義じゃないと議論が出来ないのは
おまえがアホだから
おまえがアホだから
744デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/13(日) 00:02:56.89ID:VV8A9gRv0 定義の布教なんかより技術的な会話をしろよ
745デフォルトの名無しさん (ブーイモ MM19-ZhOv)
2018/05/13(日) 00:03:10.09ID:C4Q8t1mmM 必死なのはどちらなんだろう…
746デフォルトの名無しさん (アウアウウー Sa89-bFqk)
2018/05/13(日) 00:20:47.86ID:OjngaL1la C++スレらしい流れだと思うよ
面白くていいじゃないですかぁ…
ここで linus メールをコピペ(省略)
ここで linus メールをコピペ(省略)
749デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/13(日) 08:12:09.87ID:pAG2qz7m0750デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/13(日) 08:18:26.86ID:pAG2qz7m0 >>740
> 出力中に存在すると判定されて読み込んでしまいそうですが、
> そんなことないでしょうか?
そりゃ普通にそんなことあるだろ
> もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして
> 判定する以外の方法はあるでしょうか?
そもそも何をしたいのよ?
出力完了してから読みたいだけなら出力完了してから読み込む側のスレッド起動するとかする方法もあるだろうし
> 出力中に存在すると判定されて読み込んでしまいそうですが、
> そんなことないでしょうか?
そりゃ普通にそんなことあるだろ
> もし読み込んでしまう場合、自力でフラグ管理かMutexを使うなどして
> 判定する以外の方法はあるでしょうか?
そもそも何をしたいのよ?
出力完了してから読みたいだけなら出力完了してから読み込む側のスレッド起動するとかする方法もあるだろうし
751デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/13(日) 09:30:39.74ID:tSRcUD9w0 >>749
お前がIDコロコロしてまでも定義にこだわる理由が分からん。
お前の定義なら、仮に全面インラインアセンブラで記述してあっても、
Cコンパイラを通したらそれは「Cのコード」であり、
C++コンパイラを通したらそれは「C++のコード」になり、
Objective-Cコンパイラを通したらそれは「Objective-Cのコード」と言うんだろ。
そんな定義の奴はいない。それは「アセンブラ」と言うんだよ。
ただこの定義はもういい。
君は間違いを認めないようだし、仮に俺が間違っていたとしても、
お互いの認識のズレは確認できたのだからそれでいいだろ。
そして>>638は最初からそう言っているだけだ。
お前は「コンパイル単位」でしか言語を規定できないからおかしな事になっている。
世間は「コード単位」でも言語を規定する。だから、お前が
> f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換え
と言うのを、世間では「f2()をCコードに書き換え」と言うんだよ。
仮にお前の定義が正しくても、これを日常的にやるようなら、じきに略されて
俺(世間)の言い方に落ち着くのも分かるだろ。
だから>>638は最初から、お前の言葉で言う、
> f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換える
「f2()がボトルネックだからC++からアセンブラの範囲で動くようなコードに書き換える」事を
> もっと速くしたい所をCやasmで書く
と表現している。元々「コンパイル」単位ではなく、「コード」単位なんだよ。
その「コード」について議論するのに、「コンパイル」単位を持ち出すのはおかしいだろ。
「速くしたい『所』」ってのは一部限定って事を明示してるだろ。
お前はどうしても認めないようだが。
お前は根本的に考え方がおかしい。それではまともな議論が成立しないだろ。
議論している粒度に合わせた言葉を使え。
お前がIDコロコロしてまでも定義にこだわる理由が分からん。
お前の定義なら、仮に全面インラインアセンブラで記述してあっても、
Cコンパイラを通したらそれは「Cのコード」であり、
C++コンパイラを通したらそれは「C++のコード」になり、
Objective-Cコンパイラを通したらそれは「Objective-Cのコード」と言うんだろ。
そんな定義の奴はいない。それは「アセンブラ」と言うんだよ。
ただこの定義はもういい。
君は間違いを認めないようだし、仮に俺が間違っていたとしても、
お互いの認識のズレは確認できたのだからそれでいいだろ。
そして>>638は最初からそう言っているだけだ。
お前は「コンパイル単位」でしか言語を規定できないからおかしな事になっている。
世間は「コード単位」でも言語を規定する。だから、お前が
> f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換え
と言うのを、世間では「f2()をCコードに書き換え」と言うんだよ。
仮にお前の定義が正しくても、これを日常的にやるようなら、じきに略されて
俺(世間)の言い方に落ち着くのも分かるだろ。
だから>>638は最初から、お前の言葉で言う、
> f2()がボトルネックだからC++からCの範囲で動くようなコードに書き換える
「f2()がボトルネックだからC++からアセンブラの範囲で動くようなコードに書き換える」事を
> もっと速くしたい所をCやasmで書く
と表現している。元々「コンパイル」単位ではなく、「コード」単位なんだよ。
その「コード」について議論するのに、「コンパイル」単位を持ち出すのはおかしいだろ。
「速くしたい『所』」ってのは一部限定って事を明示してるだろ。
お前はどうしても認めないようだが。
お前は根本的に考え方がおかしい。それではまともな議論が成立しないだろ。
議論している粒度に合わせた言葉を使え。
752デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/13(日) 09:51:06.22ID:pAG2qz7m0 >>751
> ただこの定義はもういい。
> 君は間違いを認めないようだし、仮に俺が間違っていたとしても、
> お互いの認識のズレは確認できたのだからそれでいいだろ。
いきなり弱気になってて笑うわ w
> ただこの定義はもういい。
> 君は間違いを認めないようだし、仮に俺が間違っていたとしても、
> お互いの認識のズレは確認できたのだからそれでいいだろ。
いきなり弱気になってて笑うわ w
753740 (マクド FF91-uCqk)
2018/05/13(日) 10:01:51.37ID:ntCzq/+YF 自己解決しました。
仮の名前でファイルを書き出してからリネームすれば書き込み中か書き込み済みか
判定する処理をなくせるみたいでした。
仮の名前でファイルを書き出してからリネームすれば書き込み中か書き込み済みか
判定する処理をなくせるみたいでした。
754デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/13(日) 11:07:48.71ID:Q3HZm9Uhd >>751
コンパイラが変わらない単なる最適化で
C++からCにする
なんて言わないから普通
少なくともエンジニアの会話では無い
簡単にいう場合は「最適化」「チューニング」だし
詳しくいう場合は中身を具体的に言う
頭の悪い文系を騙すのには使えるのかもしれないけど
コンパイラが変わらない単なる最適化で
C++からCにする
なんて言わないから普通
少なくともエンジニアの会話では無い
簡単にいう場合は「最適化」「チューニング」だし
詳しくいう場合は中身を具体的に言う
頭の悪い文系を騙すのには使えるのかもしれないけど
755デフォルトの名無しさん (スップ Sd03-c79c)
2018/05/13(日) 11:09:34.85ID:Q3HZm9Uhd C言語風なコード
と
C言語のコード
全く意味が違う
と
C言語のコード
全く意味が違う
756638 (ワッチョイ 1be7-1eaZ)
2018/05/13(日) 11:24:15.00ID:YEhpfoS10 「C++で書く」→カジュアルにSTLとか使って読みやすく書く
「Cやasmで書く」→キャッシュやSIMDとか低級に考慮してガリガリ最適化する
くらいの軽い気持ちで書いただけなのに紛糾しすぎててワイ将困惑
「Cやasmで書く」→キャッシュやSIMDとか低級に考慮してガリガリ最適化する
くらいの軽い気持ちで書いただけなのに紛糾しすぎててワイ将困惑
757デフォルトの名無しさん (スプッッ Sd03-Je+M)
2018/05/13(日) 12:17:41.91ID:oMdj20B0d 話が長い上にどうでもよすぎる
758デフォルトの名無しさん (ワッチョイ 1b7f-y4OE)
2018/05/13(日) 12:26:54.36ID:yds9udeH0 またいつものキチガイか
759デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 12:43:30.13ID:AL0mRZz+0 >>756
おまえさんの頭がC++03のまま更新が止まってしまっていることはわかった
おまえさんの頭がC++03のまま更新が止まってしまっていることはわかった
>>759
そう判断した理由は?
そう判断した理由は?
761デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 12:51:49.36ID:AL0mRZz+0 C++11以後の「低級」を知らんだろ
762デフォルトの名無しさん (ワッチョイ 2368-bFqk)
2018/05/13(日) 13:01:15.34ID:DrlMjc+O0 C++xx
この末尾のへんなナンバリングが施されるようになったのっていつ頃から?
この末尾のへんなナンバリングが施されるようになったのっていつ頃から?
763デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/13(日) 14:22:28.62ID:pAG2qz7m0 >>762
元々はC++09を狙ってたらしいから2008年頃じゃね?
元々はC++09を狙ってたらしいから2008年頃じゃね?
>>761
具体的に
具体的に
765デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 15:27:50.96ID:AL0mRZz+0 >>764
人に聞くのは知らないからだな
人に聞くのは知らないからだな
766デフォルトの名無しさん (ワッチョイ 85b3-k37M)
2018/05/13(日) 15:47:31.87ID:CI2jyTw+0 >>759
STLが03から入ったと思ってんのか
あと
>Cコンパイラってポインタ周りは最適化をかけないから、多分、
>速度差はコンパイラ起因であって
こんなこと言ってる時点でID:PbE4ojLD0の話は聞くに値しない
STLが03から入ったと思ってんのか
あと
>Cコンパイラってポインタ周りは最適化をかけないから、多分、
>速度差はコンパイラ起因であって
こんなこと言ってる時点でID:PbE4ojLD0の話は聞くに値しない
767デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 16:22:20.14ID:AL0mRZz+0 >>766
あの流れからどうやってSTLが03からという話になったんだ?
あの流れからどうやってSTLが03からという話になったんだ?
768デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/13(日) 17:44:42.77ID:tSRcUD9w0 >>756
馬鹿につき合ってすまんかった。
少なくとも俺とLinusは君と同じ定義で使ってるよ。俺の認識では世間もそう。
俺はこれでこれまで話が通じなかったことはないから。
おそらくはCをやらずにC++だけやってる世代と、
必ずCをやったうえでC++に進んだ世代の違いだ。
ゆとりだけで閉じてる世界では、彼らの主張する定義なのかもしれん。
ただまあ、話を聞いてる限り、こいつらは色々と無知だし、無知なことに無自覚だね。
まあもういいが。
自分が知らないだけのことをすべて間違いだと断定しているようでは上達しない。
C++erもここまでゆとり化が進んだのは残念だ。
馬鹿につき合ってすまんかった。
少なくとも俺とLinusは君と同じ定義で使ってるよ。俺の認識では世間もそう。
俺はこれでこれまで話が通じなかったことはないから。
おそらくはCをやらずにC++だけやってる世代と、
必ずCをやったうえでC++に進んだ世代の違いだ。
ゆとりだけで閉じてる世界では、彼らの主張する定義なのかもしれん。
ただまあ、話を聞いてる限り、こいつらは色々と無知だし、無知なことに無自覚だね。
まあもういいが。
自分が知らないだけのことをすべて間違いだと断定しているようでは上達しない。
C++erもここまでゆとり化が進んだのは残念だ。
769デフォルトの名無しさん (ブーイモ MM19-ZhOv)
2018/05/13(日) 19:37:46.91ID:5h/P5YlNM 本当に通じていたのかな?
いわゆるフツーの人達は、めんどくさいから適当に話し合わせてテキトーに打ち切るものだが…
いわゆるフツーの人達は、めんどくさいから適当に話し合わせてテキトーに打ち切るものだが…
770デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/13(日) 20:05:09.29ID:tSRcUD9w0 ついでだからもう少し書いておいてやるよ。
ゆとりC++erが「C++は速い」ということにしたがるのは、C++「言語」以下の解像度がないからだ。
「C++コンパイラさえ使えばおk」になってくれてないと困るからこそ、そこに異常にこだわる。
(他言語でも同様に、低位実装を直感的に推測できない馬鹿はこの傾向がある)
お前らは>>722-723の結果、同じデータ構造で同じアルゴリズムを適用した物に対し、
速度差が出た場合にそれを「言語の差」と言い張るようだが、
それは明確な間違いだ。ただの不勉強でしかない。
実際、それだとそれ以上の最適化は出来ないだろ。
C出身者なら、必要ならasm書いてチューニングすることも出来る。
現在C++は失敗しつつある。
それはRustを見ても明らかだ。以下ページを見てみろ。
https://imoz.jp/note/rust-functions.html
スマポ(キリッな連中にとってはC++よりもRustの方が明らかにいい言語だろ。(後発なので当たり前だが)
C++だけにすがるのは止めとけ。
もうそういう時代じゃないし、C++はそれを満たせる言語ではない。
ゆとりC++erが「C++は速い」ということにしたがるのは、C++「言語」以下の解像度がないからだ。
「C++コンパイラさえ使えばおk」になってくれてないと困るからこそ、そこに異常にこだわる。
(他言語でも同様に、低位実装を直感的に推測できない馬鹿はこの傾向がある)
お前らは>>722-723の結果、同じデータ構造で同じアルゴリズムを適用した物に対し、
速度差が出た場合にそれを「言語の差」と言い張るようだが、
それは明確な間違いだ。ただの不勉強でしかない。
実際、それだとそれ以上の最適化は出来ないだろ。
C出身者なら、必要ならasm書いてチューニングすることも出来る。
現在C++は失敗しつつある。
それはRustを見ても明らかだ。以下ページを見てみろ。
https://imoz.jp/note/rust-functions.html
スマポ(キリッな連中にとってはC++よりもRustの方が明らかにいい言語だろ。(後発なので当たり前だが)
C++だけにすがるのは止めとけ。
もうそういう時代じゃないし、C++はそれを満たせる言語ではない。
771デフォルトの名無しさん (ワッチョイ 85b3-k37M)
2018/05/13(日) 20:17:51.87ID:CI2jyTw+0 別にC++とCの宗教論争に加わるつもりはないが、
お前qsortがstd::sortより遅くなりがちな理由わかってないだろ
アセンブラ使わんでも自分で書きゃCでも同等の速度は出る
(というかVCの最適化にハンドアセンブルで本当に勝てるんか?こいつ)
>CよりもC++の方が速くなるコードの方があり得ないと思うが。
>CのほうがC++より遅いケース出してみろ。ないから。
調べもせずにこんな決めつけを書く低レベルさ以前に
これをC++のスレで書くお前はどう見てもただの荒らしだから。
お前qsortがstd::sortより遅くなりがちな理由わかってないだろ
アセンブラ使わんでも自分で書きゃCでも同等の速度は出る
(というかVCの最適化にハンドアセンブルで本当に勝てるんか?こいつ)
>CよりもC++の方が速くなるコードの方があり得ないと思うが。
>CのほうがC++より遅いケース出してみろ。ないから。
調べもせずにこんな決めつけを書く低レベルさ以前に
これをC++のスレで書くお前はどう見てもただの荒らしだから。
772デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/13(日) 20:53:01.09ID:tSRcUD9w0 >>771
お前は根本的に勘違いしている。
出発点は自前のコードでもいいが、逆アセンブル結果でもいいんだから、
改善できなくとも、遅くなることはあり得ない。
アセンブラを読めない君らでは、これは無理だ。
そして、遅くなる可能性の方が高いからやらないってのは、
馬鹿な君らなりの対処法としては正しい。
まあ、C++スレではC++マンセーしないと荒らしだ、ってのは理解した。
C++erがそこまで落ちぶれたのは残念だが、俺は去るよ。
お前は根本的に勘違いしている。
出発点は自前のコードでもいいが、逆アセンブル結果でもいいんだから、
改善できなくとも、遅くなることはあり得ない。
アセンブラを読めない君らでは、これは無理だ。
そして、遅くなる可能性の方が高いからやらないってのは、
馬鹿な君らなりの対処法としては正しい。
まあ、C++スレではC++マンセーしないと荒らしだ、ってのは理解した。
C++erがそこまで落ちぶれたのは残念だが、俺は去るよ。
773デフォルトの名無しさん (スップ Sd43-c79c)
2018/05/13(日) 20:57:13.19ID:HhTyaKjTd それぞれの言語の良くある使い方であれば
Cの方が速いコードもC++の方が速いコードも
どちらも存在する
同じ処理を同じように書けば普通は同じ速度
(ただし、一部細かい例外あり)
Cの方が速いコードもC++の方が速いコードも
どちらも存在する
同じ処理を同じように書けば普通は同じ速度
(ただし、一部細かい例外あり)
774デフォルトの名無しさん (スップ Sd43-c79c)
2018/05/13(日) 20:59:07.22ID:HhTyaKjTd 一般的な使い方では
C++の方が開発効率が高く
Cの方がバイナリの性能が高い事が多い
(もちろん逆になる要素もある)
C++の方が開発効率が高く
Cの方がバイナリの性能が高い事が多い
(もちろん逆になる要素もある)
775デフォルトの名無しさん (ワッチョイ 85b3-k37M)
2018/05/13(日) 21:06:47.71ID:CI2jyTw+0 >>772
以前ここに書いたこともあるけど、最近ET+simd(SSE、NEONのイントリンシック)で
ゲーム用の自前の線形代数ライブラリとか作ったんで
>アセンブラを読めない君ら
残念ながらこれは当てはまらないよw
どれだけ逆アセ読んで比較したか・・・・
>C++マンセーしないと
お前が”正しい批判をしてれば”荒れてないんだよ
ついでに言えば、
>「C++で書く」→カジュアルにSTLとか
STLをカジュアルとか呼ぶ辺り、最近のC++界隈は
「流行に流されて自分で考えることを放棄する」という、かつてJavaの流行に荒らされた時代と
同じ愚を犯してるな、とは思うけどねぇ
C++er憎し、では色々と話がおかしくなるよ
以前ここに書いたこともあるけど、最近ET+simd(SSE、NEONのイントリンシック)で
ゲーム用の自前の線形代数ライブラリとか作ったんで
>アセンブラを読めない君ら
残念ながらこれは当てはまらないよw
どれだけ逆アセ読んで比較したか・・・・
>C++マンセーしないと
お前が”正しい批判をしてれば”荒れてないんだよ
ついでに言えば、
>「C++で書く」→カジュアルにSTLとか
STLをカジュアルとか呼ぶ辺り、最近のC++界隈は
「流行に流されて自分で考えることを放棄する」という、かつてJavaの流行に荒らされた時代と
同じ愚を犯してるな、とは思うけどねぇ
C++er憎し、では色々と話がおかしくなるよ
776デフォルトの名無しさん (スップ Sd43-c79c)
2018/05/13(日) 21:07:47.84ID:HhTyaKjTd 同じ処理を同じ動作で記述出来ない例
Cの可変長配列
C++の例外処理
Cの可変長配列
C++の例外処理
777デフォルトの名無しさん (ワッチョイ 23b3-pJ79)
2018/05/13(日) 21:09:03.49ID:pAG2qz7m0 もうアホらしくなって途中離脱したけど
例えば関数内のループで使ってるstd::unique_ptr が遅いからその部分だけ生ポインタに書き換えたら ID:tSRcUD9w0 は何言語で書いたって言うんだろ?
って言うのはちょっと気にはなる
まあまた明後日の長文書くだけだと思うけど w
例えば関数内のループで使ってるstd::unique_ptr が遅いからその部分だけ生ポインタに書き換えたら ID:tSRcUD9w0 は何言語で書いたって言うんだろ?
って言うのはちょっと気にはなる
まあまた明後日の長文書くだけだと思うけど w
778デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
2018/05/13(日) 21:32:59.83ID:Q+Wg2L410 禿は神。
禿4はバイブル。
禿4はバイブル。
779デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 21:41:37.55ID:AL0mRZz+0 禿5マダー?(tntn
780デフォルトの名無しさん (ワッチョイ 059f-YHaA)
2018/05/13(日) 22:13:01.62ID:tSRcUD9w0 >>775
> どれだけ逆アセ読んで比較したか・・・・
ならコンパイラ出力コードが手書きアセンブラと比べてどれだけ糞かも知ってるはずだ。
それでその言い方には矛盾を感じるけどね。
> STLをカジュアルとか呼ぶ辺り、最近のC++界隈は
その発言は俺ではないが、
基本的には抽象度を上げるのは簡単にプログラミングする為であって、
「カジュアル」という表現は妥当だ。
Cみたいに全部手でゴリゴリ書く意味なんて無い。
速度が問題ない部分は出来るだけ手抜きすべきだ。STLがそれに適しているのなら使えばいい。
ただ、「STL使わなくてもどうとでもなる奴が手抜きでSTLを使う」のと、
「STLを使わないと何も出来ない連中がSTLを使う」のは全然意味が違う。
とはいえ、俺は後者が前者になるべきだとは思ってない。
ただ、後者ならC++ではなくJavaやC#を使った方が妥当だとは思うが。
君が見落としているのは、STLをカジュアルと呼ぶ連中は、
基本的に、STLを使わずに最速な実装が出来るものの、面倒なので、
「手抜き」を「カジュアル」と言い換えてごまかしているだけだということだ。
連中は君みたいにSTLが無いと何も出来ない馬鹿ではないんだよ。
> C++er憎し、では色々と話がおかしくなるよ
これは違うぞ。俺は無知なくせにデタラメを言い張るゆとりは死ねと思っているだけだ。
ただし、お前が無知のままで死ぬ権利は尊重するので、
有用な情報は書かないようにするが。
> どれだけ逆アセ読んで比較したか・・・・
ならコンパイラ出力コードが手書きアセンブラと比べてどれだけ糞かも知ってるはずだ。
それでその言い方には矛盾を感じるけどね。
> STLをカジュアルとか呼ぶ辺り、最近のC++界隈は
その発言は俺ではないが、
基本的には抽象度を上げるのは簡単にプログラミングする為であって、
「カジュアル」という表現は妥当だ。
Cみたいに全部手でゴリゴリ書く意味なんて無い。
速度が問題ない部分は出来るだけ手抜きすべきだ。STLがそれに適しているのなら使えばいい。
ただ、「STL使わなくてもどうとでもなる奴が手抜きでSTLを使う」のと、
「STLを使わないと何も出来ない連中がSTLを使う」のは全然意味が違う。
とはいえ、俺は後者が前者になるべきだとは思ってない。
ただ、後者ならC++ではなくJavaやC#を使った方が妥当だとは思うが。
君が見落としているのは、STLをカジュアルと呼ぶ連中は、
基本的に、STLを使わずに最速な実装が出来るものの、面倒なので、
「手抜き」を「カジュアル」と言い換えてごまかしているだけだということだ。
連中は君みたいにSTLが無いと何も出来ない馬鹿ではないんだよ。
> C++er憎し、では色々と話がおかしくなるよ
これは違うぞ。俺は無知なくせにデタラメを言い張るゆとりは死ねと思っているだけだ。
ただし、お前が無知のままで死ぬ権利は尊重するので、
有用な情報は書かないようにするが。
781デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/13(日) 22:14:29.75ID:VV8A9gRv0 キチガイにさわるな
782デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 22:15:45.94ID:AL0mRZz+0 密度が低い
783デフォルトの名無しさん
2018/05/13(日) 22:19:54.88784デフォルトの名無しさん (ワッチョイ 4bf0-k37M)
2018/05/13(日) 22:28:00.02ID:AL0mRZz+0 吐いた唾は呑ませんぞ
785デフォルトの名無しさん (ドコグロ MM01-pJ79)
2018/05/13(日) 23:48:52.64ID:d5CbxlL9M786デフォルトの名無しさん (ワッチョイ 0504-Ca5/)
2018/05/14(月) 00:21:52.22ID:BWBgd2BN0 constexpr+UCS=ニューパラダイムのはずだったんだがなぁ。
コンパイルタイムは夢がある。
コンパイルタイムは夢がある。
787デフォルトの名無しさん (ワッチョイ 2334-AkjX)
2018/05/14(月) 02:44:09.99ID:xNObD1oN0 昔はライブラリもそんなに充実してなかったしアルゴリズム事典とか読み漁りながら色々自作してやってたけどね
しかしまぁ便利な時代になったもんだ
C言語だと型が変わるだけで使い物にならなくなっていたものが大半だったけど
型に囚われないSTLライブラリは本当に有能だよ
型に囚われない部分は全部インラインになっちゃうけどね
しかしまぁ便利な時代になったもんだ
C言語だと型が変わるだけで使い物にならなくなっていたものが大半だったけど
型に囚われないSTLライブラリは本当に有能だよ
型に囚われない部分は全部インラインになっちゃうけどね
788デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
2018/05/14(月) 13:39:06.22ID:0aBfdvZZ0 オンラインになるんか!
789デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
2018/05/14(月) 13:40:44.68ID:0aBfdvZZ0 実行可能形式はC++、スクリプトはPython。
これができる大人の選択。
これができる大人の選択。
790デフォルトの名無しさん (ワッチョイ cb81-Iyo3)
2018/05/14(月) 13:48:17.86ID:mA8jyKTp0 バッチは?
791デフォルトの名無しさん (ワッチョイ 55b3-A5aB)
2018/05/14(月) 13:56:29.91ID:0aBfdvZZ0 バッチは他人からパクるので贅沢は言いませぬ。
792デフォルトの名無しさん (ワッチョイ 0508-1KvI)
2018/05/15(火) 20:21:01.90ID:L6tD5feN0 スタイルについての質問なんですけど、Cの文法で書けるならできるだけCで書いたほうがいいのでしょうか
上司のC++のコードがもうほんとゴリゴリのCって感じで、C++でcharの配列も無かろうよと思ったりするんですよ
確かにその方が分かる人は多くなるかもしれないですけど
上司のC++のコードがもうほんとゴリゴリのCって感じで、C++でcharの配列も無かろうよと思ったりするんですよ
確かにその方が分かる人は多くなるかもしれないですけど
793デフォルトの名無しさん (ワッチョイ 6360-bFqk)
2018/05/15(火) 20:32:27.71ID:tHLzTn7F0 >>792
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
C++ はひどい言語だ。これは、多くの平均以下のプログラマーが使ってるために
さらに輪をかけてゲロゲロになっていて、どうしようもないゴミが
簡単に生産されるようになってる。正直いって、C を選ぶ理由が C++ プログラマーを
追っぱらうため *だけ* だったとしても、それ自体、C を使う強力な理由になりうる。
C++ はトンでもなく悪い設計の元になりうる。どうせこの言語ではいつも STL やら
Boost やら、その他ゲロゲロベロベロの「素敵な」ライブラリの機能を使って、
それがあんたのプログラムに「役立つ」んだろうが、以下のことが起きる:
- うまく動かないときにもたらされる際限のない苦痛 (あと STL とか、特に Boost が
安定してるとか移植性があるとかいう奴は、どいつもこいつも大ウソつきで、
もはや笑えるレベルを超えている)
- 非効率な抽象プログラミングモデルで、2年たった後にこれらが実はそんなに
効率的じゃなかったことに気づくケース。でもそのときにはすでに全部の
コードがその素晴らしいオブジェクトモデルに依存していて、直すためには
アプリ全体を書き直さなきゃなんない。
言いかえれば、唯一まともで、効率がよくて、システムレベルで使えて、移植性がある
C++ ってのは、基本的に C で使える機能だけに限ったときなんだ。そして C だけに
限定するってことは、他の人がそれをめちゃくちゃにしないってことで、
ついでに沢山のプログラマが実際に低水準の問題を理解することができて、アホらしい
「オブジェクト・モデル」のたわごとを持ちこまないってことだ。
794デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/15(火) 20:34:21.22ID:joZeDATc0 いや別に
C++で問題ない
上司の意図は知らんが
パフォーマンスを考えたコードとか
互換性を考えたコードとか
そういう可能性も
5chの一般的な価値観とは違って
C++っぽいのが良いコードって訳じゃない
C++で問題ない
上司の意図は知らんが
パフォーマンスを考えたコードとか
互換性を考えたコードとか
そういう可能性も
5chの一般的な価値観とは違って
C++っぽいのが良いコードって訳じゃない
795デフォルトの名無しさん (ワッチョイ 0550-c79c)
2018/05/15(火) 20:36:35.58ID:joZeDATc0 逆に若者はコストも考えずに安易に汎用コンテナを使ったりと思うことがある
796デフォルトの名無しさん (ワッチョイ 7d7f-7wac)
2018/05/15(火) 21:03:22.33ID:5psId9wb0 ものによるのじゃん?
メモリイメージを意識するならCスタイルの方がきれいにおさまる。
メモリイメージを意識するならCスタイルの方がきれいにおさまる。
797デフォルトの名無しさん
2018/05/15(火) 21:09:12.04 バグを生む可能性が一切ないならCスタイルのほうがいいに決まってる
798デフォルトの名無しさん (アウアウカー Sa11-9wuq)
2018/05/15(火) 21:41:08.24ID:h7VmA7z3a c言語って移植性あるの?まともなの?
799片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-CqHk)
2018/05/15(火) 21:41:08.58ID:NlOsi0K3d 最近のC++は、std::vectorが配列に最適化されるのか? 遅いだろ
800片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-CqHk)
2018/05/15(火) 22:23:39.58ID:NlOsi0K3d C++11以降ならstd::array使うけど、覚えることがともかく多い
801片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-CqHk)
2018/05/15(火) 22:26:59.43ID:NlOsi0K3d 区間チェックしてくれる配列を簡単に指定できると嬉しいの†
802片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd43-CqHk)
2018/05/15(火) 22:31:58.98ID:NlOsi0K3d 例えば、[ ]を二重に書くと添字チェックしてくれるとか。どうかな。
int a[[10]];
int a[[10]];
803デフォルトの名無しさん (ブーイモ MM43-/P3g)
2018/05/15(火) 22:42:37.30ID:PNM8l+laM atじゃだめなんか?
804デフォルトの名無しさん (ワッチョイ 0504-Ca5/)
2018/05/15(火) 22:43:36.39ID:sqV4cudU0 例外投げるインデクサと投げないインデクサ両方ありますから。
805デフォルトの名無しさん (ワッチョイ e34c-Ci6B)
2018/05/15(火) 22:46:39.90ID:IhUmYIjB0 プロパティONにするとチェック有効で
806デフォルトの名無しさん (ワッチョイ 2334-AkjX)
2018/05/15(火) 22:46:50.65ID:IPNyvhtL0 >>802
オブジェトCを彷彿させるので嫌です
オブジェトCを彷彿させるので嫌です
807デフォルトの名無しさん (ワッチョイ 8d79-QK6s)
2018/05/16(水) 03:32:46.81ID:gRCAgj/W0 >>802
attributes構文と紛らわしい。
attributes構文と紛らわしい。
808デフォルトの名無しさん (ワッチョイ 057f-Je+M)
2018/05/16(水) 23:25:18.23ID:cmH84vOv0 arrayはなんで[]でチェックしてくれないの
809はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 1b6f-Iyo3)
2018/05/16(水) 23:28:49.70ID:axtQyUCZ0 ゼロコストの原則
810デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 02:43:52.94ID:vEqyw0xg0 C++のコストの大部分は例外に起因するらしい。
Cでコンパイルできるコードであっても、C++としてコンパイルするとバイナリが肥大化する。
その原因は例外。
Cでコンパイルできるコードであっても、C++としてコンパイルするとバイナリが肥大化する。
その原因は例外。
811デフォルトの名無しさん (ワッチョイ 5550-D7Hy)
2018/05/17(木) 07:10:31.59ID:AhjFsLsi0 x86-64だとゼロコストだよ
812デフォルトの名無しさん (ワッチョイ 758a-ZY9B)
2018/05/17(木) 08:34:28.77ID:FVFi5bM10 どこにコストが消えたんだろ
サボってるの?
サボってるの?
813デフォルトの名無しさん (ワッチョイ da33-RYnA)
2018/05/17(木) 09:12:53.49ID:UhXGat7x0 >>810 要出典。
814デフォルトの名無しさん (スップ Sdfa-D7Hy)
2018/05/17(木) 14:51:21.43ID:T9EnGAyld x86-32だと割り込み発生時に対応出来るように
関数コールの度にスタックに情報を埋め込む
x86-64はこれが不要
割り込み処理がなければコストはかからない
関数コールの度にスタックに情報を埋め込む
x86-64はこれが不要
割り込み処理がなければコストはかからない
815デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 18:56:39.80ID:vEqyw0xg0816デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 18:58:28.25ID:vEqyw0xg0 俺の見解では、例外にコストが割かれるなら、それは必要なコストだと思うんだよな。
817デフォルトの名無しさん (ワッチョイ daeb-yA46)
2018/05/17(木) 19:43:22.14ID:WDNJ9RfY0 元記事消えてるっぽいからアーカイブだけど
http://bytepointer.com/resources/pietrek_amd_x64_primer.htm
Windowsの例外機構がx64ではスタックベースからテーブルベースの通過するだけならゼロコストなものに変わった
ただしバイナリサイズは増える
http://bytepointer.com/resources/pietrek_amd_x64_primer.htm
Windowsの例外機構がx64ではスタックベースからテーブルベースの通過するだけならゼロコストなものに変わった
ただしバイナリサイズは増える
818はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ae6f-HRP5)
2018/05/17(木) 19:46:45.63ID:oI1zc+Au0 >>816
例外を使うならコストがかかるのは当然なんだが、
例外が通過しないかもしれないのにそこかしこで情報を積まないといけないのは良くないってことなんよ。
そんでまあ例外を投げたときだけにコストが生じる方式がいいよねっていう話。
例外を使うならコストがかかるのは当然なんだが、
例外が通過しないかもしれないのにそこかしこで情報を積まないといけないのは良くないってことなんよ。
そんでまあ例外を投げたときだけにコストが生じる方式がいいよねっていう話。
819デフォルトの名無しさん (ワッチョイ 5550-D7Hy)
2018/05/17(木) 20:29:27.85ID:AhjFsLsi0 例外が発生しない時のコストなんてゴミみたいなもんだけどな
820デフォルトの名無しさん (ワッチョイ 5550-D7Hy)
2018/05/17(木) 20:30:03.35ID:AhjFsLsi0 イヤなら64bitで組みなさい
821デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 20:38:19.60ID:vEqyw0xg0 64ビット化するとサイズが1.5倍になるらしいけどな。
822デフォルトの名無しさん (ワッチョイ 5550-D7Hy)
2018/05/17(木) 20:40:58.24ID:AhjFsLsi0 今時コードのサイズなんて問題にならんだろ
その代わりに得るものは大きい
その代わりに得るものは大きい
823デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 21:11:41.72ID:vEqyw0xg0 1.5倍って40sの可愛い少女が60sのオバはんになるってことではないだろか。
さあどっちか選ぶんだ。
さあどっちか選ぶんだ。
824デフォルトの名無しさん (ワッチョイ 2ee7-+uOs)
2018/05/17(木) 21:42:32.65ID:53fi3uKJ0 どうしても対応し続けないといけない32bitのレガシーデバイスがあるなら頑張って
そうじゃなけりゃもう32bitなんて捨てろ
そうじゃなけりゃもう32bitなんて捨てろ
825デフォルトの名無しさん (ドコグロ MMc2-hlLb)
2018/05/17(木) 21:43:14.24ID:egaCGTtIM >>823
それ得るもの無さすぎないか?
それ得るもの無さすぎないか?
826デフォルトの名無しさん (ワッチョイ 0db3-A9b3)
2018/05/17(木) 21:57:59.98ID:vEqyw0xg0 60kgのオッサンになるよりはいいだろ。
827デフォルトの名無しさん (ワッチョイ b605-NEzo)
2018/05/17(木) 22:02:48.61ID:/ukQRMvg0 32bitがレガシーだあ?
どこで吹き込まれたか知らんが
騙されやすいやつだな
どこで吹き込まれたか知らんが
騙されやすいやつだな
828デフォルトの名無しさん (ワッチョイ 5a68-RYnA)
2018/05/17(木) 22:20:15.79ID:yYAGBjqQ0 クラスのconst配列メンバをコンストラクタで初期化するにはどうしたらいいでしょうか?
class A
{
const double array[];
void A( double &temp[] ) : array(temp)
{
}
};
これはコンパイルでエラーが出てダメでした
class A
{
const double array[];
void A( double &temp[] ) : array(temp)
{
}
};
これはコンパイルでエラーが出てダメでした
829デフォルトの名無しさん
2018/05/17(木) 22:32:37.31830デフォルトの名無しさん (ワッチョイ ee9b-XwNb)
2018/05/17(木) 22:33:23.35ID:MPVDtJCy0 constの問題というよりサイズが決まってないからダメなんじゃないの?
831デフォルトの名無しさん
2018/05/17(木) 22:34:24.00 ここ3年ほど32bitの組み込み機器に触ったことない
832デフォルトの名無しさん (ワッチョイ 2ee7-+uOs)
2018/05/17(木) 22:37:16.99ID:53fi3uKJ0 今はほとんど64bitの上で無理矢理32bit動かしてるんだよ
ネイティブ32bitCPUなんて化石
ネイティブ32bitCPUなんて化石
833デフォルトの名無しさん (ワッチョイ 5a68-RYnA)
2018/05/17(木) 22:51:21.67ID:yYAGBjqQ0834デフォルトの名無しさん (ワントンキン MM25-1jw3)
2018/05/18(金) 17:13:18.87ID:8ieomEvbM vc++のマルチコアのオプティマイズなんて甘々だから余裕で
勝てるけどなぁ。
あんなのに負ける人もいるって、世の中広いなぁ(棒)
勝てるけどなぁ。
あんなのに負ける人もいるって、世の中広いなぁ(棒)
835771 (ワッチョイ b133-NTEn)
2018/05/18(金) 18:23:15.07ID:G5mHfuQa0 アホだろお前
836デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/18(金) 18:33:25.05ID:pNV6CZfO0 そりゃあ頑張れば勝てるだろう
コーディングコストと可読性の犠牲に見合うほど速くなるかどうかは別問題だがね
コーディングコストと可読性の犠牲に見合うほど速くなるかどうかは別問題だがね
837771 (ワッチョイ 95b3-NTEn)
2018/05/18(金) 18:57:13.66ID:jCVxhDbN0 VCもそうだけど大体のコンパイラは並列化や自動ベクタライズは強くないと思う
古くからある機能とそうでないものでは最適化に差が出るのは当然
だからこそSIMD使うときはみんなイントリンシック命令使ってるのであって
古くからある機能とそうでないものでは最適化に差が出るのは当然
だからこそSIMD使うときはみんなイントリンシック命令使ってるのであって
838デフォルトの名無しさん (スップ Sdda-D7Hy)
2018/05/18(金) 20:11:41.99ID:Xj+Uy2RAd >>834て誰に対してのレス?
839デフォルトの名無しさん (ワッチョイ 4623-XbkE)
2018/05/18(金) 21:20:25.60ID:TsUe9Yho0 >>828
template<std::size_t N>
class A {
public:
const double array[N];
template<typename ...ARGS>
A( ARGS&&... args ): array{std::forward<ARGS>(args)...} {}
};
template<typename ...ARGS>
inline auto make_A( ARGS&&... args ) -> A<sizeof...(args)>
{
return A<sizeof...(args)>(std::forward<ARGS>(args)...);
}
auto a{ make_A( 1.0, 2.0 ) };
こんな感じだろうか。
要C++11以降。
>>どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんでサイズは未定にしておきました
要素数が決まってないとコンパイル時に困るので、テンプレートクラスにしちゃったけれど…
template<std::size_t N>
class A {
public:
const double array[N];
template<typename ...ARGS>
A( ARGS&&... args ): array{std::forward<ARGS>(args)...} {}
};
template<typename ...ARGS>
inline auto make_A( ARGS&&... args ) -> A<sizeof...(args)>
{
return A<sizeof...(args)>(std::forward<ARGS>(args)...);
}
auto a{ make_A( 1.0, 2.0 ) };
こんな感じだろうか。
要C++11以降。
>>どんなサイズの配列が来るかはコンストラクタが呼び出されるまでわからないんでサイズは未定にしておきました
要素数が決まってないとコンパイル時に困るので、テンプレートクラスにしちゃったけれど…
840デフォルトの名無しさん (ワッチョイ 4623-XbkE)
2018/05/18(金) 22:05:36.49ID:TsUe9Yho0841デフォルトの名無しさん (ワッチョイ b133-NTEn)
2018/05/18(金) 22:33:37.26ID:G5mHfuQa0 参考にしてみた
https://wandbox.org/permlink/3asRA3QSPQXmmn8l
C++17ならヘルパー不要にはなる・・・(コンストラクタに与えた引数から推定
けどどっちにしても配列数可変にはできない
ていうか配列の参照とか初めて使ったw
https://wandbox.org/permlink/3asRA3QSPQXmmn8l
C++17ならヘルパー不要にはなる・・・(コンストラクタに与えた引数から推定
けどどっちにしても配列数可変にはできない
ていうか配列の参照とか初めて使ったw
842デフォルトの名無しさん (ワッチョイ 9aa2-NEzo)
2018/05/19(土) 00:03:26.14ID:9PVep4LN0 >>828
C++14のinteger_sequence使ってみた
#include <iostream>
#include <utility>
template <size_t N>
class A
{
const double array[N];
public:
template <size_t... I>
A(const double (&temp)[N], std::index_sequence<I...>) : array{temp[I]...}
{
for (auto x : array) std::cout << x << std::endl;
}
A(const double (&temp)[N]) : A(temp, std::make_index_sequence<N>()){}
};
int main()
{
double t[] = {1.1, 2.2, 3.3};
A<sizeof(t)/sizeof(t[0])> a(t);
//A a(t); // C++17
}
C++14のinteger_sequence使ってみた
#include <iostream>
#include <utility>
template <size_t N>
class A
{
const double array[N];
public:
template <size_t... I>
A(const double (&temp)[N], std::index_sequence<I...>) : array{temp[I]...}
{
for (auto x : array) std::cout << x << std::endl;
}
A(const double (&temp)[N]) : A(temp, std::make_index_sequence<N>()){}
};
int main()
{
double t[] = {1.1, 2.2, 3.3};
A<sizeof(t)/sizeof(t[0])> a(t);
//A a(t); // C++17
}
843デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/19(土) 00:10:45.61ID:WRHfxyyT0 糞面倒だな
844デフォルトの名無しさん (アウアウウー Sa39-RYnA)
2018/05/19(土) 00:15:37.45ID:VIvIbG0Fa アンチパターンを生み出すための新機能が次々出てくるのがc++だ!
845デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/19(土) 00:33:17.81ID:WRHfxyyT0 こういうのからiostreamみたいになってゆくんだろうな
846デフォルトの名無しさん (ワッチョイ 769a-qaY6)
2018/05/19(土) 03:41:10.01ID:BMt6S/TK0 つか引数にconst double(&temp)[]って何だと渡せるのこれ
()ないとエラー出るし
()ないとエラー出るし
847デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/19(土) 06:54:38.61ID:KlOWaW480 何も渡せないよ
配列数のない配列型はどんな文脈でも不完全型だからその型のオブジェクトは存在し得ない
配列数のない配列型はどんな文脈でも不完全型だからその型のオブジェクトは存在し得ない
848デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/19(土) 07:39:54.12ID:03NPLOb40 >>842
VS2017 15.7.1のVCのReleaseモードだとtemplateの部分が赤の下波線になるな
Debugモードにするとなぜか消える
そしてReleaseモードはエラーが出ているのにコンパイルして実行可能
バグじゃね
VS2017 15.7.1のVCのReleaseモードだとtemplateの部分が赤の下波線になるな
Debugモードにするとなぜか消える
そしてReleaseモードはエラーが出ているのにコンパイルして実行可能
バグじゃね
849はちみつ餃子 ◆8X2XSCHEME (ワッチョイ ae6f-HRP5)
2018/05/19(土) 12:37:22.83ID:WMhjioR90 >>847
仮引数として表れる場合はポインタに調整されるんじゃなかったっけ?
仮引数として表れる場合はポインタに調整されるんじゃなかったっけ?
850デフォルトの名無しさん (ワッチョイ 6e2a-+uOs)
2018/05/19(土) 13:11:36.50ID:KlOWaW480 配列型はね
配列の参照型はされない
配列の参照型はされない
851デフォルトの名無しさん (ワッチョイ da34-+iZv)
2018/05/21(月) 09:24:48.82ID:SHQ/MEmo0 引数で渡す場合は配列自体が参照型だもんな
852デフォルトの名無しさん (ワッチョイ b632-NEzo)
2018/05/21(月) 21:45:00.90ID:SySmX4Pj0 配列への参照ってのはあるんだけどね
template <typename T, int N>
N size(T (&)[N]) { return N; }
template <typename T, int N>
N size(T (&)[N]) { return N; }
853デフォルトの名無しさん (ワッチョイ b632-NEzo)
2018/05/21(月) 21:45:22.62ID:SySmX4Pj0 あ、ミスった
わかる人笑ってw
わかる人笑ってw
854デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/22(火) 10:34:44.57ID:QHYj3MXfM855デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/22(火) 17:07:12.03ID:CbgK21am0856デフォルトの名無しさん (ドコグロ MMfa-/8Ls)
2018/05/22(火) 17:37:39.23ID:LzyusK+ZM857デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/23(水) 09:57:56.51ID:NT2O+rqe0858デフォルトの名無しさん (ワッチョイ 758a-ZY9B)
2018/05/23(水) 10:14:09.85ID:2zsXYckB0 >>848の3行目は無かったことにすると
859デフォルトの名無しさん (ワッチョイ dacf-pX8m)
2018/05/23(水) 10:39:06.93ID:NT2O+rqe0 だから「エディタの」バグと書き忘れただけなのにお前らしつこいな
DebugモードでもReleaseモードでもコンパイルして実行できてたんだから
DebugモードでもReleaseモードでもコンパイルして実行できてたんだから
860デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 12:24:31.22ID:fJYH1ZEbM 書き忘れとか知らんがな w
そもそもエディタのバグと言うなら三行目は元々不要
余計なことを書いて突っ込まれるとか低能にありがちな行動ってだけ
そもそもエディタのバグと言うなら三行目は元々不要
余計なことを書いて突っ込まれるとか低能にありがちな行動ってだけ
861デフォルトの名無しさん (アウアウウー Sa39-zBOy)
2018/05/23(水) 12:33:07.54ID:8Hna4W5Ya862デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 12:40:43.11ID:fJYH1ZEbM863デフォルトの名無しさん (ブーイモ MMfa-SJSt)
2018/05/23(水) 13:02:27.39ID:nSCJSr52M エラーの話なのになぜか未定義とか言い出す奴が
864デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 15:37:22.12ID:fJYH1ZEbM 未定義の意味を理解してないなら絡んでこない方がいいぞ
865デフォルトの名無しさん (ワッチョイ b678-NEzo)
2018/05/23(水) 17:20:05.74ID:CpOh1zRO0 エラー
警告
未定義
不適格
↑
混同するやつが後を絶たないな
警告
未定義
不適格
↑
混同するやつが後を絶たないな
866デフォルトの名無しさん (ワッチョイ 89fa-9WOx)
2018/05/23(水) 19:15:29.66ID:Au5e7VGg0 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
V9EWM
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
V9EWM
867デフォルトの名無しさん (ワッチョイ b678-NEzo)
2018/05/23(水) 21:13:20.83ID:CpOh1zRO0 しょーもね
868デフォルトの名無しさん (ドコグロ MMa5-/8Ls)
2018/05/23(水) 21:13:21.12ID:fJYH1ZEbM この文脈でエラーとか警告とか言い出す時点でアホ丸出しなんだが...w
869デフォルトの名無しさん (ワッチョイ daeb-yA46)
2018/05/23(水) 22:07:04.14ID:lbYCZF160 VisualStudioはインテリセンスとコンパイルに使うコンパイラが違う
ちょっと設定変えると、とてつもなくエラーが出るのにコンパイルは通るという事態は稀に良くある
ちょっと設定変えると、とてつもなくエラーが出るのにコンパイルは通るという事態は稀に良くある
870デフォルトの名無しさん (ブーイモ MM1d-RIxT)
2018/05/24(木) 12:25:45.78ID:hqF4m+XgM871デフォルトの名無しさん (ワッチョイ 5146-vwA5)
2018/05/24(木) 23:58:30.63ID:XccjINB00 あるコンテナaとコンテナbを連結?するようなクラス(イテレータ)を作りたいんだが
イメージとしてはa.begin()からa.end()-1までいったら次はb.begin()になるようなやつを思い浮かべてるんだけど
どんな風につくればよいかアドバイスください
イメージとしてはa.begin()からa.end()-1までいったら次はb.begin()になるようなやつを思い浮かべてるんだけど
どんな風につくればよいかアドバイスください
872デフォルトの名無しさん (ワッチョイ 93a2-vxiR)
2018/05/25(金) 00:18:38.25ID:HgmGhgcw0 >>871
concat_iteratorでググるとそれっぽい実装がチラホラ
concat_iteratorでググるとそれっぽい実装がチラホラ
873デフォルトの名無しさん (バットンキン MM25-vADk)
2018/05/25(金) 10:18:09.43ID:SC+wi2VoM C++で2Dのwindowsで動くゲーム作ろうと思っているのだけど、ライブラリって何使えばいいんだ?
874デフォルトの名無しさん (ブーイモ MM1d-RIxT)
2018/05/25(金) 10:18:58.21ID:AT66E0O7M GDI
875デフォルトの名無しさん (ワッチョイ 8b9a-2NJ2)
2018/05/25(金) 11:33:06.12ID:JXMMrzE70 direct2d
876デフォルトの名無しさん
2018/05/25(金) 12:11:02.95 Unity
877デフォルトの名無しさん (ワッチョイ 59b3-x/qq)
2018/05/25(金) 12:19:23.12ID:lIIOH/4a0 Opengl
878デフォルトの名無しさん (アウアウウー Sadd-DqgS)
2018/05/25(金) 12:52:26.94ID:s00mTA6Oa DirectX Tool Kit
879デフォルトの名無しさん (ワントンキン MM25-RIxT)
2018/05/25(金) 14:11:55.60ID:7mkguDclM cairo
880デフォルトの名無しさん (ワッチョイ 39a9-vADk)
2018/05/25(金) 18:33:18.15ID:vSqqKkie0 いっぱいあるなー、一通り試してみようかな
881放置された蟻人間 ◆T6xkBnTXz7B0 (スフッ Sd33-s+lB)
2018/05/25(金) 18:37:43.90ID:mtapFpQed 全部は時間的に無理。
882デフォルトの名無しさん (アウアウウー Sadd-Ockd)
2018/05/25(金) 19:06:13.22ID:O4zlrz7ka DirectX Tool Kit一択だとおもうが
883デフォルトの名無しさん (ワッチョイ 9381-DqgS)
2018/05/25(金) 19:16:41.38ID:BiCg0uer0 OpenGLなんてのは?
884デフォルトの名無しさん (ワッチョイ fb9b-bqqt)
2018/05/25(金) 19:17:34.72ID:el+ngQt20 windowsに限定するならopneGLにする意味は薄い
885デフォルトの名無しさん (ワッチョイ 39a9-vADk)
2018/05/25(金) 23:32:47.23ID:vSqqKkie0 DirectX tool kit なるものは一般的なDirectXの上位互換みたいな捉え方でおk?
886デフォルトの名無しさん (ワッチョイ d904-zX0R)
2018/05/25(金) 23:41:23.37ID:9e9u/b+G0 >>882
よこからだけど、これ面白そう。
よこからだけど、これ面白そう。
887はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b6f-DqgS)
2018/05/26(土) 01:45:05.97ID:r5N0xqhb0 Siv3D とかも楽に使えると思う。 (3D という名前がついてるけど 2D もいける)
888デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/26(土) 09:49:22.16ID:Gw/MbzDj0 今の時代なら cocos 2d とかモバイルでも使えるライブラリ使った方がいいんじゃないのか
889デフォルトの名無しさん (スプッッ Sd33-PpUk)
2018/05/26(土) 10:01:48.35ID:KfOwUuVld c++ならアンリアルエンジンで行こうぜ
890デフォルトの名無しさん (ワッチョイ d993-xy05)
2018/05/26(土) 15:38:59.11ID:dTnlF+1t0 あれESCキーが消えるから…
891デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 08:17:20.26ID:kgP2LOmLa string::size_type についてですが、
size_type の前についている
「string::」
というのは何ですか?
size_type の前についている
「string::」
というのは何ですか?
892デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 08:20:28.98ID:kgP2LOmLa 名前空間ではないようですし。
893デフォルトの名無しさん (ドコグロ MM3d-Lo1h)
2018/05/29(火) 08:28:38.63ID:HMjaHK3IM 静的メンバ関数
でぐぐれ
でぐぐれ
894デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 09:38:09.06ID:kgP2LOmLa895デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/29(火) 12:33:02.70ID:WLsT9puy0 メンバ関数の引数や戻り値、メンバ変数などで使用するためにクラススコープで定義された型のこと
クラス(この場合はstd::string)を利用する側は、
実際にはその型がなんであるかを知る必要なく
文字列のサイズの型としてstring::size_type を用いることができる
参考
https://stackoverflow.com/questions/41471741/string-companion-types
クラス(この場合はstd::string)を利用する側は、
実際にはその型がなんであるかを知る必要なく
文字列のサイズの型としてstring::size_type を用いることができる
参考
https://stackoverflow.com/questions/41471741/string-companion-types
896デフォルトの名無しさん (アウアウウー Sadd-vxiR)
2018/05/29(火) 13:47:00.51ID:kgP2LOmLa897デフォルトの名無しさん (ワッチョイ 89ab-wW0t)
2018/05/29(火) 23:46:46.84ID:vO9YU0hS0 std::threadでサブスレッドで処理をしているのですが、処理をキャンセルするためthreadをdetachすると
メモリを破壊しているようで全然別の箇所で色々なエラーが出てきます。system_errorは送出されていません。
サブスレッドではnewでのリソース確保もしていないので理由がわからないです。
detachする際にはjoinableである以外に条件があるのでしょうか。
メモリを破壊しているようで全然別の箇所で色々なエラーが出てきます。system_errorは送出されていません。
サブスレッドではnewでのリソース確保もしていないので理由がわからないです。
detachする際にはjoinableである以外に条件があるのでしょうか。
898デフォルトの名無しさん (ブーイモ MM33-wlFZ)
2018/05/29(火) 23:59:57.19ID:6Y/6D3P7M >>897
スレッドローカル記憶域とか破棄されたあとにアクセスしてんじゃないの?
スレッドローカル記憶域とか破棄されたあとにアクセスしてんじゃないの?
899デフォルトの名無しさん (ワッチョイ 13eb-Jwyk)
2018/05/30(水) 00:33:26.79ID:4+P0NcT60 std::threadのdetachってスレッドを手放すだけでキャンセルはしないのでは
ラムダ式で処理を渡してるなら、ローカル変数の参照キャプチャとかしてるない?
ラムダ式で処理を渡してるなら、ローカル変数の参照キャプチャとかしてるない?
900デフォルトの名無しさん (ワッチョイ c9b3-UDci)
2018/05/30(水) 00:33:44.46ID:D8xt/f/p0 detachしてもスレッドは動き続けますが。
901デフォルトの名無しさん (ワッチョイ 7923-Y0oy)
2018/05/30(水) 00:56:37.13ID:OvmXW6ID0 一般にスレッドのキャンセルは難しいので適当に処理を終わらせてjoinするのが良いも思う
902デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 01:10:14.80ID:K2528e3P0 https://ideone.com/3LDXGx
質問です。定期的に同じ関数をスレッドで起動するクラスを作りました。
んでコード中のここ無駄って書いてある行を削除する方法はありませんか。
開発はVCでやってますが、GCCでも通ればいいなーと思っています。
質問です。定期的に同じ関数をスレッドで起動するクラスを作りました。
んでコード中のここ無駄って書いてある行を削除する方法はありませんか。
開発はVCでやってますが、GCCでも通ればいいなーと思っています。
903897 (ワッチョイ 89ab-wW0t)
2018/05/30(水) 02:51:38.91ID:gP4Z92jH0 すみません。言葉足らずでした。
メインスレッド:GUI、サブスレッド:既存のライブラリでデータ補間の重い処理
を担当していて、途中でデータ補間パラメータを変更したくなった場合
キャンセルボタンを押してやり直す、という処理を考えています。
CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。重い処理のループの中にキャンセル用フラグでも用意できればキャンセル通知後
ループを抜けて速やかにjoinするところまで到達させる等の方法があるのですが、
既存ライブラリなのでそうはいかず諦めてdetachしようと考えています。
そのまま走り続けるだけだから結果を回収せずほっておけば良いのかと思ってましたが
甘かったみたいです。
>>898
thread_localは使っていないです。
>>899
アドバイスありがとうございます。関数オブジェクト作ってキャプチャは使っていないです。
>>901
スレッドを平和理に終了させる方法はなさそうなのでdetachできなければ諦めてjoinするしかなさそうですね…
とりあえず最小の再現例を作ってみることにします。
メインスレッド:GUI、サブスレッド:既存のライブラリでデータ補間の重い処理
を担当していて、途中でデータ補間パラメータを変更したくなった場合
キャンセルボタンを押してやり直す、という処理を考えています。
CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。重い処理のループの中にキャンセル用フラグでも用意できればキャンセル通知後
ループを抜けて速やかにjoinするところまで到達させる等の方法があるのですが、
既存ライブラリなのでそうはいかず諦めてdetachしようと考えています。
そのまま走り続けるだけだから結果を回収せずほっておけば良いのかと思ってましたが
甘かったみたいです。
>>898
thread_localは使っていないです。
>>899
アドバイスありがとうございます。関数オブジェクト作ってキャプチャは使っていないです。
>>901
スレッドを平和理に終了させる方法はなさそうなのでdetachできなければ諦めてjoinするしかなさそうですね…
とりあえず最小の再現例を作ってみることにします。
904デフォルトの名無しさん (ワッチョイ 31c3-4/py)
2018/05/30(水) 09:53:15.07ID:eD7a+sCF0 重い処理の方を別プログラムのプロセスにしちゃって止めるときはブチ殺すのがシンプルで良さそうに見える
905デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:43:48.31ID:K2528e3P0906デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:44:50.87ID:K2528e3P0 >>902
たのんますー。
たのんますー。
907デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 17:50:39.57ID:K2528e3P0 基本的にstd::threadでキャンセルは不可能。
自分でそういう機構を汲んでやらないといけない。
whileの実行をキャンセルするbool変数つっこむとか。
それでもクリティカルパスの実行は避けられない。
自分でそういう機構を汲んでやらないといけない。
whileの実行をキャンセルするbool変数つっこむとか。
それでもクリティカルパスの実行は避けられない。
908デフォルトの名無しさん (ワッチョイ d950-UKFX)
2018/05/30(水) 18:55:49.81ID:DJsvI6z80 強引にスレッドを殺すと、
そのスレッドが確保してたリソースが解放されないかもしれないぞ
メモリであったりセマフォだったりハンドルだったり
ちゃんと終了処理を追加しないとダメだよ
そのスレッドが確保してたリソースが解放されないかもしれないぞ
メモリであったりセマフォだったりハンドルだったり
ちゃんと終了処理を追加しないとダメだよ
909デフォルトの名無しさん (ワッチョイ 1323-Y0oy)
2018/05/30(水) 19:05:49.61ID:EimB82cz0910デフォルトの名無しさん (ワッチョイ d904-28pY)
2018/05/30(水) 22:01:02.21ID:K2528e3P0 ぷぅうううううううううりいいいいいいいぃいいいいいいいいいずへーーーーーーーるぷみーーーーーーーーーー。
911デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/05/31(木) 16:11:24.94ID:W0WQ5cWo0 関数の中にif(cancel)return;みたいなのを大量に仕込んで外からフラグを立てて止めろ
912デフォルトの名無しさん (ワッチョイ 457e-msj4)
2018/05/31(木) 19:02:31.60ID:OT8Sfmwc0 基本的にはフラグで止めるか別プロセスで実行するのが定石だが
質問者は
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
>構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。
と言ってるからなぁ
質問者は
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは
>構わないのですがjoinするとそこで処理終了まで待ってしまうのでdetachしたいわけです。
と言ってるからなぁ
join なんて、カラクリが良く分からないものを、よく使う気になるなぁ
私なら、チャイルドプロセスが自爆するように、陽に記述するなぁ
私なら、チャイルドプロセスが自爆するように、陽に記述するなぁ
914デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/05/31(木) 20:40:15.15ID:nmebeT/e0 joinが嫌ならdetachすればいいのよ
パンがなければお菓子をたべればいいのよ
パンがなければお菓子をたべればいいのよ
915デフォルトの名無しさん (ワッチョイ 169f-msj4)
2018/05/31(木) 20:53:09.91ID:VgZC2OSf0 世の中には信じられないメンタリティの人がいるもんだなあ
916デフォルトの名無しさん (ワッチョイ 7a23-XTxf)
2018/05/31(木) 21:03:58.91ID:3a+XHa0i0 join のカラクリは何も難しいことないと思うが
917デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/05/31(木) 21:13:34.61ID:nmebeT/e0 標準ライブラリが嫌ならpthread使えばいいのよ
918897 (ワッチョイ bdab-b3FY)
2018/05/31(木) 21:49:57.28ID:VY6h/Th40 いろいろアドバイスありがとうございます。
どうもdetachした後に局所変数が確保されるとスタックを破壊してしまうようで、
局所変数を確保する前に>>911氏のいうようにif(cancel)return;入れるとLinuxでは落ちなくなりました。
ですが、windowsでは改善せず諦めました。atomicにするのものも面倒ですし。
結局キャンセルするときは結果を回収せず、さらに別スレッド立ち上げてjoinすることで
メインスレッドのGUIに制御が戻るようにしました。長期的には別プロセス化するしかなさそうですね。
ありがとうございました。
どうもdetachした後に局所変数が確保されるとスタックを破壊してしまうようで、
局所変数を確保する前に>>911氏のいうようにif(cancel)return;入れるとLinuxでは落ちなくなりました。
ですが、windowsでは改善せず諦めました。atomicにするのものも面倒ですし。
結局キャンセルするときは結果を回収せず、さらに別スレッド立ち上げてjoinすることで
メインスレッドのGUIに制御が戻るようにしました。長期的には別プロセス化するしかなさそうですね。
ありがとうございました。
919デフォルトの名無しさん (ドコグロ MM19-/PkI)
2018/05/31(木) 21:53:20.51ID:TwfgGFWOM920デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:35:57.56ID:EV/maKH/0 913はスレッドを自爆させた後joinしないのであろう…
921デフォルトの名無しさん
2018/05/31(木) 22:51:40.57 子スレッドが一つならjoinで待っててもいいけど、複数個になったら無限ループで待つよね
922デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:52:12.55ID:EV/maKH/0 ていうか「重い処理かつ終了に時間が要するスレッド」複数個を所有するサーバみたいなスレッドを一発噛ませて、
パラメータを変えたくなったら「現行スレッド停止」と「新しいパラメータでのスレッド起動」をサーバに対して指令するつくりにすれば
良い
この場合は「重い処理かつ終了に時間が要するスレッド」が終了するまで誰も待つ必要はなく(※サーバ終了時は除く
、サーバみたいなスレッドは、クライアントから「新しいパラメータでのスレッド起動」コマンドを受けたときおもむろに
「死んでる(再利用できる)スレッドはどれかいな〜、」とタイムアウト0秒のjoinでポーリング式にサーチすれば良い
現行スレッドが死ぬまでの間現行スレッドと新たに起動するスレッドが並列に動くことになるが
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは 構わない
ということですしおすし、
パラメータを変えたくなったら「現行スレッド停止」と「新しいパラメータでのスレッド起動」をサーバに対して指令するつくりにすれば
良い
この場合は「重い処理かつ終了に時間が要するスレッド」が終了するまで誰も待つ必要はなく(※サーバ終了時は除く
、サーバみたいなスレッドは、クライアントから「新しいパラメータでのスレッド起動」コマンドを受けたときおもむろに
「死んでる(再利用できる)スレッドはどれかいな〜、」とタイムアウト0秒のjoinでポーリング式にサーチすれば良い
現行スレッドが死ぬまでの間現行スレッドと新たに起動するスレッドが並列に動くことになるが
>CPUは複数コアあるのでサブスレッドが走り続けてリソース開放が遅れるのは 構わない
ということですしおすし、
923デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/05/31(木) 22:56:14.51ID:EV/maKH/0 >>921
ウィンドーズならWaitForMultipreObjects()とかその亜種で複数の終了待ちができうる
そうでなくともイベントフラグの同時待ちはだいたいどんなマルチタスクOSでもできるから
それを使って類似のしくみを作れうる、。
ウィンドーズならWaitForMultipreObjects()とかその亜種で複数の終了待ちができうる
そうでなくともイベントフラグの同時待ちはだいたいどんなマルチタスクOSでもできるから
それを使って類似のしくみを作れうる、。
924デフォルトの名無しさん (ワッチョイ daf9-xIz4)
2018/05/31(木) 23:21:33.93ID:i2WXWbd70 >>923
できうる、作れうるって日本語的におかしいだろう
できうる、作れうるって日本語的におかしいだろう
925デフォルトの名無しさん (ワッチョイ f58d-InwY)
2018/06/01(金) 04:04:16.74ID:p3jBadVq0 ウインドーズとか何か別物感あるし、multipleのスペルもおかしいし大丈夫か
926デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/06/01(金) 04:08:40.92ID:ampOWGNn0 色々なところで糞が露呈している
それがWindows
それがWindows
927はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e6f-NLsb)
2018/06/01(金) 04:11:32.11ID:uW2rQW//0 デザインとしては Windows の方が現代的なんだけど、
色んなものが POSIX を基本にしたデザインになってるから噛み合わないんよなぁ。
色んなものが POSIX を基本にしたデザインになってるから噛み合わないんよなぁ。
928デフォルトの名無しさん (ワッチョイ 7a34-6ZIh)
2018/06/01(金) 04:16:04.83ID:ampOWGNn0 POSIXに準拠できないWindowsがどうかしている
929はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 8e6f-NLsb)
2018/06/01(金) 04:22:16.25ID:uW2rQW//0 >>928
昔は POSIX 準拠にしてたよ。
アメリカの政府が採用するのに POSIX を要求してたみたいで、仕方なくやったって話。
だけど、基本的なモデルが違うものに API だけ接ぎ木してもなぁ。
昔は POSIX 準拠にしてたよ。
アメリカの政府が採用するのに POSIX を要求してたみたいで、仕方なくやったって話。
だけど、基本的なモデルが違うものに API だけ接ぎ木してもなぁ。
930デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/06/01(金) 04:43:45.31ID:SICoZSIN0 windowsでpthread使うたびにトラブル起こってつら
931デフォルトの名無しさん (ブーイモ MMbe-k5Cw)
2018/06/01(金) 08:14:44.74ID:WJ5uQBEIM >>921
他に条件があるならともかく、普通にjoinで待てばよくね?
他に条件があるならともかく、普通にjoinで待てばよくね?
932デフォルトの名無しさん (ブーイモ MMbe-k5Cw)
2018/06/01(金) 08:27:54.49ID:WJ5uQBEIM >>922
joinしたら再利用できないだろ
joinしたら再利用できないだろ
933デフォルトの名無しさん
2018/06/01(金) 08:30:22.24 >>931
別に、joinで済むならjoinでいいんじゃね
別に、joinで済むならjoinでいいんじゃね
934デフォルトの名無しさん (ワッチョイ f523-XTxf)
2018/06/01(金) 09:15:20.19ID:oHKnNuZr0 キャンセルしたくなるほど長い処理ならスレッドキューイングする利点はない
もちろんしたいならしてもいい
もちろんしたいならしてもいい
935デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 09:35:53.16ID:uCsHgk1n0 C++を使うなら、Windowsでいいんじゃないの。
Clang、gcc、clと主要なコンパイラが動く貴重な環境だし。
文書を残さないといけないからアプリも必要。
図を描くのにvimでSVG書くって人もいるけど、流石にそれは労力の使い方を間違えてる。
Clang、gcc、clと主要なコンパイラが動く貴重な環境だし。
文書を残さないといけないからアプリも必要。
図を描くのにvimでSVG書くって人もいるけど、流石にそれは労力の使い方を間違えてる。
936デフォルトの名無しさん (ブーイモ MMbe-o2EZ)
2018/06/01(金) 10:01:00.93ID:oDn7ey18M サブスレッドでjoinして結果を使わない、というのとデタッチするのとどう違うんやろな。デタッチってなんのメリットあるんやろか。
937デフォルトの名無しさん (ワッチョイ f523-XTxf)
2018/06/01(金) 10:15:36.25ID:oHKnNuZr0 自分で書いてる通り結果を使わなくて終了も待ちたくないなら join せずデタッチ。
メリットはリソース(スレッドハンドルなど待ち合わせ用リソース)の自動的な解放くらいか。
メリットはリソース(スレッドハンドルなど待ち合わせ用リソース)の自動的な解放くらいか。
938デフォルトの名無しさん (アウアウウー Sa09-msj4)
2018/06/01(金) 11:41:29.12ID:sIQxQP9sa 連結リストのクラス list があります。
addFirst
removeFirst
などのメンバ関数があります。
この list を継承して、 stack クラスを作ります。
stack クラスにはメンバ関数 push と pop があります。
push の中で addFirst を呼んでいます。
pop の中で removeFirst を呼んでいます。
stack クラスのインスタンスからは、 list クラスの addFirst, removeFirst などを
利用不可としたいのですが、どうすればいいのでしょうか?
: public list と継承するともちろんダメです。
: private list と継承すると push の中で呼んでいる addFirst が使えなくなってしまいます。
どうすればいいのでしょうか?
addFirst
removeFirst
などのメンバ関数があります。
この list を継承して、 stack クラスを作ります。
stack クラスにはメンバ関数 push と pop があります。
push の中で addFirst を呼んでいます。
pop の中で removeFirst を呼んでいます。
stack クラスのインスタンスからは、 list クラスの addFirst, removeFirst などを
利用不可としたいのですが、どうすればいいのでしょうか?
: public list と継承するともちろんダメです。
: private list と継承すると push の中で呼んでいる addFirst が使えなくなってしまいます。
どうすればいいのでしょうか?
939デフォルトの名無しさん (スップ Sd7a-2KSg)
2018/06/01(金) 11:47:52.19ID:1LiDvq+rd protect
940デフォルトの名無しさん
2018/06/01(金) 11:55:31.26 friend
941デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 11:55:48.39ID:uCsHgk1n0 ・stack : protected listとして、必要なメンバをstackで明示的に公開する。
・listとstackのポインタに互換性がなくなる。
・listとstackのポインタに互換性がなくなる。
942デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 11:58:45.22ID:uCsHgk1n0 ・assert、throw等で警告するだけのaddFirst、removeFirstをstack側に作りオーバーライドし、規約で使うなと言っておく。
・非常にダサい。
・非常にダサい。
943デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 12:00:33.78ID:uCsHgk1n0 ・基底クラスbasic_listを設け、そこからlistとstackを別に派生する。
944デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/06/01(金) 12:12:54.27ID:SICoZSIN0945デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 12:31:43.05ID:uCsHgk1n0 >>944
wslでおk。
wslでおk。
946デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 12:33:20.56ID:uCsHgk1n0 wslを有効にしてコルタナにウブンツと言えばすぐ使えます。
947デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/06/01(金) 12:41:08.30ID:SICoZSIN0 wslでWindowsネイティブなバイナリ作れんの?
948デフォルトの名無しさん (ドコグロ MMe2-/PkI)
2018/06/01(金) 12:43:01.01ID:Iz+jFShBM949デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 12:44:36.05ID:uCsHgk1n0 さあどうだろ?
Linux側からWindowsのファイルは読めるけど。
環境設定が大変そうだな。
逆にWindows側からLinuxのファイルを直接変更したらだめらしい。
Linux側からWindowsのファイルは読めるけど。
環境設定が大変そうだな。
逆にWindows側からLinuxのファイルを直接変更したらだめらしい。
950デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 12:47:41.68ID:uCsHgk1n0 俺のおすすめの使い方は、Windowsバイナリはcl、Linuxバイナリはwsl上のgccで作る。
開発環境はVisual Studio2017、CMakeプロジェクトを使う。
これだけでWindowsとLinux両方対応できる。
開発環境はVisual Studio2017、CMakeプロジェクトを使う。
これだけでWindowsとLinux両方対応できる。
951デフォルトの名無しさん (ワッチョイ 4a7e-msj4)
2018/06/01(金) 12:51:07.74ID:SICoZSIN0952デフォルトの名無しさん (アウアウウー Sa09-msj4)
2018/06/01(金) 13:01:33.50ID:sIQxQP9sa953デフォルトの名無しさん (ラクッペ MM35-HOfo)
2018/06/01(金) 13:11:39.88ID:pUOZzX0iM954デフォルトの名無しさん (ワントンキン MM8a-75sl)
2018/06/01(金) 13:29:21.95ID:A9MSzynoM >>944
別に補陀落渡海しても良いのよ
別に補陀落渡海しても良いのよ
955デフォルトの名無しさん (ワッチョイ d58a-/WEz)
2018/06/01(金) 13:30:34.27ID:STCtC+aF0 >>952
Macの内部はUnixだから
Macの内部はUnixだから
956デフォルトの名無しさん (ブーイモ MMbe-k5Cw)
2018/06/01(金) 16:26:14.37ID:WJ5uQBEIM957デフォルトの名無しさん (スップ Sd7a-2KSg)
2018/06/01(金) 18:47:58.65ID:U3fjUVmpd リスト構造のスタックなんて簡単なんだからゼロから作っちゃえば?
958デフォルトの名無しさん (スップ Sd7a-2KSg)
2018/06/01(金) 18:52:33.22ID:U3fjUVmpd push pop size
copy move swap constructor destructor
くらいでしょ使うの
片方向でもいいだろうし
copy move swap constructor destructor
くらいでしょ使うの
片方向でもいいだろうし
959デフォルトの名無しさん (ワッチョイ 0123-C2Ni)
2018/06/01(金) 19:38:34.27ID:nSTFCyDP0 stackはlistではないし継承は間違ってるわな
960デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/01(金) 19:48:21.87ID:uCsHgk1n0 俺、リストツリーっていうの考えたんだけど、聞きたい?
961デフォルトの名無しさん (スップ Sd7a-2KSg)
2018/06/01(金) 19:58:07.59ID:U3fjUVmpd >>959
頭が硬いやつはソフトに向いてない
頭が硬いやつはソフトに向いてない
962デフォルトの名無しさん (アウアウウー Sa09-msj4)
2018/06/01(金) 20:19:59.69ID:sIQxQP9sa963デフォルトの名無しさん (ワッチョイ 018a-75sl)
2018/06/01(金) 21:27:36.17ID:naL+ZRGN0 下手が伝染るから、クヌースを取り寄せしたほうが良いぞ
>>938
私なら委譲を使います
私なら委譲を使います
965デフォルトの名無しさん (ブーイモ MMbe-k5Cw)
2018/06/01(金) 21:52:15.80ID:eT4/jjIPM >>933
どんな用途を想定してるの?
どんな用途を想定してるの?
966デフォルトの名無しさん (ワッチョイ f523-XTxf)
2018/06/02(土) 01:50:36.43ID:z1beHaLa0967デフォルトの名無しさん (ワッチョイ 79ce-eFb7)
2018/06/02(土) 07:25:22.85ID:uqsytqRM0 >>938
そういうことをやるなっていうのが「リスコフの置換原則」
そういうことをやるなっていうのが「リスコフの置換原則」
968デフォルトの名無しさん (ワッチョイ 2593-5uk3)
2018/06/02(土) 07:40:27.42ID:SH+PTz7E0 「外から見えるインターフェースが変わらなければ
内部の具体的な実装がまったくの別物に変わっても使うのに支障ない」
ていうオブジェクト指向のカプセル化だっけ、あのあたりの教材じゃなかろうか。
それと継承のアクセス制御の使い方。
内部の具体的な実装がまったくの別物に変わっても使うのに支障ない」
ていうオブジェクト指向のカプセル化だっけ、あのあたりの教材じゃなかろうか。
それと継承のアクセス制御の使い方。
969デフォルトの名無しさん (ワッチョイ 2593-5uk3)
2018/06/02(土) 11:23:31.53ID:SH+PTz7E0 派生クラスのアクセス制御、と書くべきだったかな。
意味は通じると思うけど、用語の使い方に厳しい人もいる故。
意味は通じると思うけど、用語の使い方に厳しい人もいる故。
970デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/06/02(土) 13:02:49.13ID:x6PfuSbY0 >>932
言葉足らずだったスマン
スレッドハンドルの配列があったとして、[i]についてjoinしたら[i]を再利用できる(再びスレッドをcreateしなおせば良い
、の意味
joinせずとも済むやり方もあるが、
(「重い処理かつ終了に時間が要するスレッド」の関数本体をそのままスレッドにするのではなしに、
普段イベントを待ち、イベントが来たら「重い処理かつ終了に時間が要するスレッド」の関数本体を普通にcallし、そいつがreturnしてきたら
再びイベントを待つ、というループするスレッドとしてwrapすれば良い、等
結局「重い処理かつ終了に時間が要するスレッド」が使っていた資源が開放されたことを論理的に知る必要からは逃れられず、
一番簡単なのがjoinですよという意味で>>922ではjoinと言ったので察してホスイ、
言葉足らずだったスマン
スレッドハンドルの配列があったとして、[i]についてjoinしたら[i]を再利用できる(再びスレッドをcreateしなおせば良い
、の意味
joinせずとも済むやり方もあるが、
(「重い処理かつ終了に時間が要するスレッド」の関数本体をそのままスレッドにするのではなしに、
普段イベントを待ち、イベントが来たら「重い処理かつ終了に時間が要するスレッド」の関数本体を普通にcallし、そいつがreturnしてきたら
再びイベントを待つ、というループするスレッドとしてwrapすれば良い、等
結局「重い処理かつ終了に時間が要するスレッド」が使っていた資源が開放されたことを論理的に知る必要からは逃れられず、
一番簡単なのがjoinですよという意味で>>922ではjoinと言ったので察してホスイ、
971デフォルトの名無しさん (ワッチョイ 5db3-/C2z)
2018/06/02(土) 17:26:29.14ID:RQ4rJlvL0 ほむほむ、ところでgtestとBoost.Testはどっちが良いですかな?
972デフォルトの名無しさん (アウアウカー Sa5d-cyJq)
2018/06/03(日) 18:24:16.97ID:gfv0Z2yCa 初心者脱出したいから課題くれ
973デフォルトの名無しさん (ワッチョイ daf9-xIz4)
2018/06/03(日) 20:26:24.96ID:g8+eu/OT0974デフォルトの名無しさん (スップ Sd9a-LFwF)
2018/06/03(日) 23:46:44.76ID:D70hzHzDd975デフォルトの名無しさん (ワッチョイ 7abd-h81y)
2018/06/03(日) 23:58:49.35ID:/T91IteZ0 「計算機プログラムの構造と解釈」(SICP)を読んで演習課題を解いたら良い
>>975
まだ scheme 手習いが終わっていないのです(泣)
まだ scheme 手習いが終わっていないのです(泣)
977デフォルトの名無しさん (ワッチョイ d541-NxRc)
2018/06/06(水) 22:04:43.09ID:2Ea3o2oY0 リトルインディアン、ビッグインディアンも教えない職場があるんだな。
おっさん、びっくりしたわ。
おっさん、びっくりしたわ。
978デフォルトの名無しさん (ワッチョイ d5a9-jaPo)
2018/06/06(水) 22:13:02.59ID:JW9lzKor0979デフォルトの名無しさん
2018/06/06(水) 22:41:41.43980デフォルトの名無しさん (ワッチョイ bab6-jY45)
2018/06/06(水) 23:17:12.31ID:jNE6zLei0 One little, two little, three little Indians
981デフォルトの名無しさん (ワッチョイ 7aeb-Uejh)
2018/06/06(水) 23:33:53.26ID:m+Bnnm4Z0 エンディアンなのかインディアンだったかいつも忘れる
口語は混ざる
口語は混ざる
982デフォルトの名無しさん (ワッチョイ 9a4c-lSES)
2018/06/06(水) 23:36:43.24ID:zexNX0En0 >>979
インディアンは習ったろ
インディアンは習ったろ
983デフォルトの名無しさん
2018/06/06(水) 23:48:14.36 >>982
ネイティブアメリカンなら習ったけど🙄
ネイティブアメリカンなら習ったけど🙄
984デフォルトの名無しさん (ワッチョイ ba81-NLsb)
2018/06/06(水) 23:48:33.17ID:Ne6bz6Er0 ガリバー旅行記はいつどこで習うんだろう
985デフォルトの名無しさん (ワッチョイ d193-HI6s)
2018/06/07(木) 06:56:59.11ID:u4DD79290 「リトル・エンディアン」「ビッグ・エンディアン」て用語は
『ガリバー旅行記』が由来、という情報が載ってるサイトで、
主人公が漂着した小人の国、巨人の国のエピソードから…、とか
書いてあるのを見たことがある。ネタだったのかも知れないけど。
『ガリバー旅行記』が由来、という情報が載ってるサイトで、
主人公が漂着した小人の国、巨人の国のエピソードから…、とか
書いてあるのを見たことがある。ネタだったのかも知れないけど。
>>985
それはほんと、小人国での卵の割り方にちなみます
それはほんと、小人国での卵の割り方にちなみます
987デフォルトの名無しさん
2018/06/07(木) 08:17:13.03 >>986
ニホンゴムズカシイネ^^
ニホンゴムズカシイネ^^
988デフォルトの名無しさん (アウアウカー Sa2d-abwI)
2018/06/07(木) 11:07:30.43ID:texCzkEwa989デフォルトの名無しさん (スップ Sd73-wQOh)
2018/06/07(木) 11:22:48.86ID:W9Xn18jEd インディアンを教える職場って
どんな職場だよ
どんな職場だよ
990デフォルトの名無しさん (スプッッ Sd7d-diB1)
2018/06/07(木) 11:49:27.36ID:ZMsL/8Fsd だってオラはSEだから
991デフォルトの名無しさん (ワッチョイ 1334-KXLn)
2018/06/07(木) 12:38:00.08ID:pGQiQE2u0 SEなら尚更知っておかないと
日本はなんちゃってSEばっかだもんなw
日本はなんちゃってSEばっかだもんなw
992デフォルトの名無しさん (スップ Sd73-wQOh)
2018/06/07(木) 13:14:35.77ID:W9Xn18jEd SEとインディアンの関係は?
993985 (ワッチョイ d193-HI6s)
2018/06/07(木) 13:15:06.93ID:u4DD79290994デフォルトの名無しさん (ワッチョイ 6b13-DGJA)
2018/06/07(木) 20:44:47.09ID:BA7hChNz0 >>988
貴様が知る必要はない!
貴様が知る必要はない!
995デフォルトの名無しさん (ワッチョイ 09c3-5Ttc)
2018/06/07(木) 20:48:11.43ID:DJdTp6lo0 何でもネットに繋がらなきゃならないこの時代にhtolやltohを避けて通れるもんなのか?
PHPしか触らないWeb屋ならともかくここC++スレだぞ
PHPしか触らないWeb屋ならともかくここC++スレだぞ
996デフォルトの名無しさん (ドコグロ MM7d-Chll)
2018/06/07(木) 21:46:11.03ID:XXEPBZnxM 今時C++と言えどhtol()とかltoh()なんて低レイヤーの関数使うことなんて滅多にないだろ
997デフォルトの名無しさん (アウアウウー Sad5-5aY/)
2018/06/07(木) 21:50:55.26ID:gS6wfz1ca >>995
ソフトウェアがなんでもかんでもネットワークに繋ぐ必要があると思ってるの?ここC++スレだぞ
ソフトウェアがなんでもかんでもネットワークに繋ぐ必要があると思ってるの?ここC++スレだぞ
998デフォルトの名無しさん
2018/06/07(木) 22:31:28.79 C++使うくらいだからXMLとかJSON使うんだろ
999デフォルトの名無しさん (ワッチョイ 1b37-x2t7)
2018/06/07(木) 23:10:47.05ID:C4iY9p8E0 >>998
utf16はどうしたらいいの?
utf16はどうしたらいいの?
1000デフォルトの名無しさん (ワッチョイ 534c-cPPs)
2018/06/07(木) 23:16:41.18ID:B+7Xk0Ks0 続きはwebで
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 68日 2時間 56分 35秒
新しいスレッドを立ててください。
life time: 68日 2時間 56分 35秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 高市早苗総理「金利上昇よりも日本の成長が大事」 ★2 [Hitzeschleier★]
- 【将棋】福間香奈 女流六冠が会見 妊娠・出産でタイトル戦の事実上不戦敗 「妊娠したら、どちらか一方を諦めないといけない状況」 [冬月記者★]
- 【コメ】卸売業者「簡単に安売りできない」「大暴落起きれば大赤字に」 JA「新米の販売進度が近年になく遅い。コメの回転が悪い」 ★2 [Hitzeschleier★]
- 小泉防衛相「危険回避のための十分な情報なかった」「問題の本質は30分にわたるレーダー照射」…中国側の音声公開を強く批判 [♪♪♪★]
- 【野球】止まらぬ野球人口減少に危機感 ラミレス氏「野球人口は激減、人気自体も下がっている」「もっと野球ができる環境を整えるべき」 [冬月記者★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 ★2 [少考さん★]
- 小泉防衛大臣「中国から通告はあったが具体的ではなかった」 [834922174]
- 【高市悲報】漁師さん「ハタハタが豊漁になるように祈願した!」1匹しか獲れなかったと話題になる😰 [616817505]
- 【速報】共同通信スクープキタ━(゚∀゚)━!!「実際は日本の自衛隊機が中国機に対してレーダ照射ロックオンしていたことが発覚」 [339712612]
- Vtuberラーメン70%オフwwwwwwwww
- 【悲報】銀、世界中で枯渇、一晩で16円値上りし未曾有の領域に入ってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 【悲報】タマキン「高市さんはようやっとる!撤回の必要なし!」高市「早くトランプに会いたい🤗」国会にて [359965264]
