C++相談室 part139

レス数が1000を超えています。これ以上書き込みはできません。
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0
次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/

■長いソースを貼るときはここへ。■
 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
2019/01/12(土) 09:31:51.80ID:VES9RvQbM
あと、ライブラリを作った奴のスキルの問題でconstを付けるべきときに付いてないのも仕事でやってりゃ普通にあるぞ
2019/01/12(土) 09:34:33.47ID:Ma3Bi+e40
Cのライブラリに渡すのならなおらstd::stringの内部配列を渡すべきでないし
そのようなスキルの低い作者の作ったライブラリの何を信用しろと言われるのか
2019/01/12(土) 09:35:58.84ID:VES9RvQbM
Cに一切ポインタ渡すなって?
凄いこと言うなあ
2019/01/12(土) 10:17:58.63ID:D4HU0Own0
なにもそう煽らなくても
現場の人間か責任を負う立場の人間かで意見も異なるのがわかるだろうに
2019/01/12(土) 10:56:59.61ID:Fa1DhIVTa
責任を負う立場の人間がconstがどうのなんて気にするわけないでしょw
「契約相手がそう言ってるなら信用すればよい。違っていたら相手の責任だ。」で終わりだよ
2019/01/12(土) 11:23:34.77ID:WnhdkTsC0
まあ契約でそうなってても残業するのは作業者だからな。。
バカの言うことなんて信用しないで安全に倒した方が正解だわ。
984デフォルトの名無しさん (スップ Sd7a-9pEX)
垢版 |
2019/01/12(土) 11:34:06.80ID:JcHNo1aqd
constは付いてないですけど内部で書き換えはしません
なんて仕様書に書いてあるのか
2019/01/12(土) 12:01:03.58ID:VES9RvQbM
void displayText(char* text);
文字列を表示します
text : 表示する文字列

これが仮にtextを書き換えてしまうとして、それをコピーで回避できたとしても、
そんなレベルのゴミがまともに機能するとは到底思えん
そんなことを言い出したらキリがない
2019/01/12(土) 12:48:58.54ID:d9Np0YH50
>>942
1. 要素数を N としたとき、1つの要素の処理に要する時間が O(N) になるか、
  O(1) などの違いなので、本質的にハードがいくら良くなっても解決する
  問題ではない。O(N) のアルゴリズムは、N が大きくなった場合には、
  ハードの良さを台無しにしてしまう。なので、アルゴリズムの選定はとても
  重要。

2. 動的配列でも、配列の最後に追加する場合は、リンクリストと遜色ない速度は
  出る可能性は十分あるが、配列の途中に追加する場合は、宇宙人でも無理。

3. 逆に、リンクリストの場合は、先頭から数えて、「k 番目の要素」にランダム
  にアクセスすることを高速化することは、宇宙人でも無理。

4. 「宇宙人でも無理」の意味が理解できるためには、数学的感性が必要。
  理解できない人には理解できないかもしれない。
2019/01/12(土) 13:04:53.68ID:VES9RvQbM
>>986
問題は、リンクリストの途中に挿入したいとき、予め挿入位置の直前や直後のノードへのポインタを持っていなければならないことだ
そんなケースは現実の開発において殆ど無い
持っていなければ挿入位置に辿り着くまでにO(N)のシーケンシャルアクセスが発生する
そして、リンクリストはメモリアクセスの局所性が欠片もないデータ構造であり、
動的配列と比較してシーケンシャルアクセスのパフォーマンスは極めて劣悪である
2019/01/12(土) 13:27:37.63ID:xzy8SRaPM
テキストエディタのバッファ管理なんてのが
そのケースなんですけどね
2019/01/12(土) 13:33:01.95ID:VES9RvQbM
>>988
うん。レアケースだね。
2019/01/12(土) 13:34:27.13ID:xzy8SRaPM
我田引水の基地と判明
991デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
垢版 |
2019/01/12(土) 13:40:34.57ID:Cfay/yS40
>>968
あかん。データを壊したくなかったら、別途コピーしたものを渡すべき。
2019/01/12(土) 13:44:47.40ID:7KwgHC6s0
そろそろ次スレ
2019/01/12(土) 14:46:05.16ID:k4bgy+v70
俺の上司とかconstって何?よけいなもんつけんなっていうおじさんだから内政のライブラリは参照でもconst付いてないよ
2019/01/12(土) 15:06:09.76ID:k4bgy+v70
>>986
で、そのリンクリストがパフォーマンス的に勝るデータ量はおいくらだと思ってる?
大きめの画像くらいのサイズならデータの中央に挿入するとき、リンクをたどって挿入するより再確保、再配置した方がシーケンシャルアクセスになるから早いからな
ハードウェアの特性によりシーケンシャルなコピーは相当速いためPythonで一般的に扱う問題では挿入だろうが何だろうがリンクリストが勝ることはまずない
2019/01/12(土) 15:20:37.52ID:T5Trh1u0M
よくリストの特定位置に挿入を繰り返してリンクリストの方が速いというベンチマークがあるけど、あれもほとんど詐欺なんだよな
動的配列に多数の要素を挿入するなら挿入する要素数分ブロックコピーでずらしてから空けた隙間に書き込むだけだからリンクリストより圧倒的に速い
予め要素数が分からない場合は、いったん別の動的配列に追加していってから纏めて挿入すればよい
2019/01/12(土) 15:20:48.59ID:yBCTPneO0
>>994
>再確保、再配置
ここ c++ だよね
再配置というのはコピーコンストラクタが働く、てことだよね
挿入のたびにコピーコンストラクタが動くなんて馬鹿のやることだ、という常識が通用するところだよね
2019/01/12(土) 15:21:48.44ID:yBCTPneO0
>>995
>ブロックコピーでずらしてから
ユーザーによるコピーコンストラクタが定義されていたら「それだけでは済まない」のでは?
2019/01/12(土) 15:42:46.28ID:k4bgy+v70
ユーザーが勝手に遅くすることは関係の無い話だ
その場合リストを使えばいいのでは
2019/01/12(土) 16:00:10.74ID:iezJoARlM
コピーが嫌なら別途ポインタの動的配列を持てばよい
それでもリンクリストよりは速いわ
2019/01/12(土) 17:28:52.24ID:xSSM7u+V0
リストに親でも殺されたのか? w
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 16時間 29分 4秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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