次スレを立てる時は本文の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
探検
C++相談室 part139
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ f65b-zn+7)
2018/10/06(土) 00:59:48.54ID:CdYUXXMG0918デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/06(日) 20:16:22.17ID:kxJaA4Vn0 >>916
変換関数の中でメモリ割り付けを行うのが好みなのか?
変換関数の中でメモリ割り付けを行うのが好みなのか?
919デフォルトの名無しさん (ワッチョイ d93d-3A6Y)
2019/01/06(日) 20:27:50.31ID:Tw0qXLcy0 んま実際にわ数値の桁数とか型を見たら一発でわかるんですけどねwwwwww
logは人間の感覚特性にマッチした量的尺度を表したり(例:dB)、
情報量の表現に使う(同じものがいっぱいあるという状況は情報量を上げない)という目的が大きい
logは人間の感覚特性にマッチした量的尺度を表したり(例:dB)、
情報量の表現に使う(同じものがいっぱいあるという状況は情報量を上げない)という目的が大きい
920デフォルトの名無しさん (ワッチョイ 8901-ikDe)
2019/01/06(日) 21:04:54.26ID:q7b7d/XL0 HTMLパーサーありますか?
921デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/06(日) 21:27:13.56ID:kxJaA4Vn0 >>919
intは何桁だ?
intは何桁だ?
922デフォルトの名無しさん (ワッチョイ 79ab-cEz4)
2019/01/06(日) 22:23:30.07ID:IpTON8AO0923デフォルトの名無しさん (ワッチョイ 5161-PFih)
2019/01/06(日) 22:46:51.25ID:viPzIL890 >>917
前提として浮動小数点数(float/double など) の話だけど、誤差が無いとは言い切れない
事は分かると思う。
誤差を少なくする方法として、10で割ったりせずに、最初から、
10000.0, 1000.0, 100.0, 10.0, 1.0, 0.1, 0.01, 0.001
20000.0, 2000.0, ・・・
30000.0, 3000.0, ・・・
40000.0, 4000,0, ・・・
のようなものを計算しておいて、比較したり引き算したりする方法が
あるそうな。
浮動小数点値の場合、当然かもしれないが log を使わずに、IEEE の仕様を元に
指数部のBIT部分を読んで利用する方がいいらしい。
前提として浮動小数点数(float/double など) の話だけど、誤差が無いとは言い切れない
事は分かると思う。
誤差を少なくする方法として、10で割ったりせずに、最初から、
10000.0, 1000.0, 100.0, 10.0, 1.0, 0.1, 0.01, 0.001
20000.0, 2000.0, ・・・
30000.0, 3000.0, ・・・
40000.0, 4000,0, ・・・
のようなものを計算しておいて、比較したり引き算したりする方法が
あるそうな。
浮動小数点値の場合、当然かもしれないが log を使わずに、IEEE の仕様を元に
指数部のBIT部分を読んで利用する方がいいらしい。
924デフォルトの名無しさん (ワッチョイ 8901-xhm2)
2019/01/07(月) 08:39:12.81ID:4xwPMGVF0 桁数が重要になるような銀行や事務系の話?
それなら10進演算だろ
IEEEでも定義されてる
科学計算だと対数で問題ない
それなら10進演算だろ
IEEEでも定義されてる
科学計算だと対数で問題ない
925デフォルトの名無しさん (ワッチョイ 51e3-PFih)
2019/01/07(月) 13:35:29.03ID:QyN6UiiI0 >>924
自分で printf() を実装する場合の、浮動小数点数を文字列に直す時の話。
自分で printf() を実装する場合の、浮動小数点数を文字列に直す時の話。
926デフォルトの名無しさん (ワッチョイ b332-xhm2)
2019/01/07(月) 13:47:41.82ID:hsoUdh4l0 自分でprintfを実装するとか銀行のシステムを作るよりレアケースだな
927デフォルトの名無しさん (ワッチョイ 81ff-xhm2)
2019/01/07(月) 17:09:10.70ID:Cio2TleD0 ここがC++スレということを忘れて内科医?
printfはオーバーロードできるしグローバル以外の空間にも導入できる
printfはオーバーロードできるしグローバル以外の空間にも導入できる
928デフォルトの名無しさん (ワッチョイ 8901-eTP0)
2019/01/07(月) 20:19:39.05ID:hm6qCAOJ0 そんなことするんじゃねーよカスが。
929デフォルトの名無しさん (ワッチョイ 5167-xhm2)
2019/01/07(月) 23:14:26.87ID:lPhgCzer0 Pythonには素の遅いPythonとJITを使った素のPythonよりとてつもなく速いPythonがあるようですが
Boost.PythonでPythonスクリプトを読み込んで実行した場合は素の遅いPythonの速度になる認識であっているでしょうか?
また、Boost.PythonでJIT版Pythonを実行することは可能でしょうか?
Boost.PythonでPythonスクリプトを読み込んで実行した場合は素の遅いPythonの速度になる認識であっているでしょうか?
また、Boost.PythonでJIT版Pythonを実行することは可能でしょうか?
930デフォルトの名無しさん (ワッチョイ 5161-PFih)
2019/01/09(水) 00:35:27.60ID:I3YK3qiz0 >>929
全然その辺知らないけど、
そもそも、python の言語仕様自体がJITを使ったとしてもC/C++ほどの速度には
ならないはずだし、そもそも NumPy 使わないと遅いということは聞いてる。
大体のスクリプト言語は、言語仕様の段階で例えコンパイル言語化しても
どうすることも出来ない遅さが含まれてしまってる。
全然その辺知らないけど、
そもそも、python の言語仕様自体がJITを使ったとしてもC/C++ほどの速度には
ならないはずだし、そもそも NumPy 使わないと遅いということは聞いてる。
大体のスクリプト言語は、言語仕様の段階で例えコンパイル言語化しても
どうすることも出来ない遅さが含まれてしまってる。
931デフォルトの名無しさん (ワッチョイ 917c-aDDJ)
2019/01/09(水) 11:18:19.67ID:+j6Vua/i0 numpy使えばC並みの速度が出るようにも書けるが
numpy使ったからと言って馬鹿が描くと素のpython以上に遅くなる
numpy使ったからと言って馬鹿が描くと素のpython以上に遅くなる
932デフォルトの名無しさん (ラクッペ MMe5-88M8)
2019/01/09(水) 13:18:31.63ID:ePvWX0K6M 速度なんて誰でも気にしない優しい世界
933デフォルトの名無しさん (ワッチョイ 8901-eTP0)
2019/01/09(水) 19:27:53.32ID:LMntakFz0 用意されてるライブラリ使えと。
バカがイキって作ったライブラリより普通に速いから。
バカがイキって作ったライブラリより普通に速いから。
934デフォルトの名無しさん (ワッチョイ b332-xhm2)
2019/01/09(水) 19:38:55.54ID:P7Qg82S60 numpyの使い方の話ではなく?
935デフォルトの名無しさん (ワッチョイ a97c-88M8)
2019/01/09(水) 20:20:55.44ID:1OkzU/m20 というかスレチでは?
936デフォルトの名無しさん (ワッチョイ 5161-PFih)
2019/01/09(水) 21:54:22.59ID:eG2hyzXv0 ・動的型言語
・自動メモリ管理
・リンクリストと配列を余り区別しない書き方をする人が多い傾向。
これらがあるので、pythonをコンパイル型にしてもある程度以上の高速化は
難しいと思われる。
・自動メモリ管理
・リンクリストと配列を余り区別しない書き方をする人が多い傾向。
これらがあるので、pythonをコンパイル型にしてもある程度以上の高速化は
難しいと思われる。
937デフォルトの名無しさん (ワッチョイ f15f-u+tM)
2019/01/09(水) 22:15:33.61ID:oaJURpH60 Cythonの話?
938デフォルトの名無しさん (ワッチョイ 5161-PFih)
2019/01/09(水) 22:24:15.05ID:eG2hyzXv0 pythonの速度測定は、やってみたことないけどね。(^_^;)
939デフォルトの名無しさん (アウアウエー Sa22-oec2)
2019/01/10(木) 08:22:27.02ID:jdFEneY4a Pythonにリンクリストなんか無いだろ
Pythonの配列(list)はvector相当の動的配列
実はリンクリストが動的配列より速いケースってC++でも現実にはほとんど無くて、あまり価値のないデータ構造だよ
拡張・縮小にメモリの再確保が不要で抽象化を必要としないから、Cのような生ポインタを好んで使いまくる言語と相性がいいだけ
Pythonの配列(list)はvector相当の動的配列
実はリンクリストが動的配列より速いケースってC++でも現実にはほとんど無くて、あまり価値のないデータ構造だよ
拡張・縮小にメモリの再確保が不要で抽象化を必要としないから、Cのような生ポインタを好んで使いまくる言語と相性がいいだけ
940デフォルトの名無しさん (ワッチョイ faa5-rp4P)
2019/01/10(木) 13:04:00.84ID:EKtor9ZH0 ttps://github.com/python/cpython/blob/master/Modules/arraymodule.c
3000行のありがたいソースコードを読み解けば何かが分る
3000行のありがたいソースコードを読み解けば何かが分る
941デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/10(木) 13:06:20.15ID:RGz7BwRGM >>940
普通に動的配列だな
普通に動的配列だな
942デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/10(木) 15:05:21.30ID:681jFEkb0 ハード屋さんが頑張りすぎて必要なくなっちゃったな
でも便利だからforward_listを使うことはある
でも便利だからforward_listを使うことはある
943デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
2019/01/10(木) 20:06:55.51ID:Dp9bpyFY0 tupleってメンバ関数で値取り出せないのね。
std::get<N>( t ) ってファンキー過ぎやしませんか。
下手に使うとコンパイルに時間食われそう。
std::get<N>( t ) ってファンキー過ぎやしませんか。
下手に使うとコンパイルに時間食われそう。
944デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/10(木) 21:56:09.15ID:cH4uyoE20 関数やテンプレートで、できることとできないことを
冷静に考えてみな
冷静に考えてみな
945デフォルトの名無しさん (ワッチョイ f995-peLi)
2019/01/10(木) 22:54:40.61ID:pr4jZotH0 >>944
テンプレート化すればメンバ関数にすることはできるのでは?
テンプレート化すればメンバ関数にすることはできるのでは?
946デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/10(木) 23:01:28.43ID:681jFEkb0 コードを生成するのはプリプロセッサの役割
947デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/10(木) 23:13:51.80ID:cH4uyoE20948デフォルトの名無しさん (ワッチョイ 9a3a-w1rC)
2019/01/10(木) 23:31:47.36ID:lkkMD/RY0 メンバテンプレートにするとtupleをテンプレートに放り込んだときに
t.template get<0>()
と書かなきゃならなくなってこりゃないわーで皆が合意したからじゃ
t.template get<0>()
と書かなきゃならなくなってこりゃないわーで皆が合意したからじゃ
949デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
2019/01/11(金) 13:20:57.05ID:QV4rGvMY0 せめてstd::tuple::get<N>( t ) にして欲しかった。
std名前空間汚れすぎ。
std名前空間汚れすぎ。
950デフォルトの名無しさん (ワッチョイ a57c-Iup+)
2019/01/11(金) 13:34:51.99ID:5RUmP2fm0951デフォルトの名無しさん (ワントンキン MM8a-vTg4)
2019/01/11(金) 14:22:09.67ID:gs9IdzGQM 他のコンテナでも同じように使える様にしたかったんじゃないの
オーバロードで
オーバロードで
952デフォルトの名無しさん (ワッチョイ 715f-L/7z)
2019/01/11(金) 14:50:24.94ID:e7J07k250 std::getは固定長コンテナなら何でも使えるぞ
std::pairでもstd::arrayでも生配列でも
std::pairでもstd::arrayでも生配列でも
953デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/11(金) 15:52:17.33ID:uZGQy9uP0 >>949
std::getにすることによってテンプレート引数にtupleと見なせる型(pair,array)を使うことができるようにしたいからそうなっている
std::getにすることによってテンプレート引数にtupleと見なせる型(pair,array)を使うことができるようにしたいからそうなっている
954デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/11(金) 15:56:06.33ID:uZGQy9uP0 ちなみにstd::getのユーザーによる特殊化は次から禁止される予定です
955デフォルトの名無しさん (ワッチョイ 1902-l2tH)
2019/01/11(金) 17:29:27.31ID:qkp6ca1e0 ポリモーフィズムを使っていて、ダウンキャストを行うときって
dynamic_castをしてみてnullptrかどうかを判断するのがベストな手順なんですか?
RTTIから実際の型情報を引っ張ってくる手段はないものでしょうか
dynamic_castをしてみてnullptrかどうかを判断するのがベストな手順なんですか?
RTTIから実際の型情報を引っ張ってくる手段はないものでしょうか
956デフォルトの名無しさん (ブーイモ MM71-peLi)
2019/01/11(金) 18:21:19.24ID:3LH9+DohM >>955
もちできるけど、検査したい型を継承した型を渡されたら動かないよ?
もちできるけど、検査したい型を継承した型を渡されたら動かないよ?
957デフォルトの名無しさん (ワッチョイ d646-kZrb)
2019/01/11(金) 19:17:46.71ID:KlFqADLA0 >>955
それこそポリモーフィズムで派生クラスのthisを直でもらえばいいんじゃないの
それこそポリモーフィズムで派生クラスのthisを直でもらえばいいんじゃないの
958デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
2019/01/11(金) 19:25:12.52ID:QV4rGvMY0 >>955
typeid で type_info 取れるよ。
基底クラスにenum Type 等を持たせてswitchも手の一つ。
処理内容によってはvisitor パターンが使える。俺が知ってるのはこれくらい。
typeid で type_info 取れるよ。
基底クラスにenum Type 等を持たせてswitchも手の一つ。
処理内容によってはvisitor パターンが使える。俺が知ってるのはこれくらい。
959デフォルトの名無しさん (ワッチョイ 715f-L/7z)
2019/01/11(金) 20:46:28.26ID:e7J07k250 まず、なるべくダウンキャストなんか必要ないようにするのが最初だけどな
960デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/11(金) 20:50:53.28ID:uZGQy9uP0 ダウンキャスト使わないのがベスト
961デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/11(金) 21:13:21.95ID:ymL5E9Q60 >>955
ダウンキャストが必要になるなら、選択はそれしかない
ダウンキャストが必要になるなら、選択はそれしかない
962デフォルトの名無しさん (ドコグロ MM9d-CymP)
2019/01/11(金) 22:23:52.97ID:jxLB4o2EM963デフォルトの名無しさん (ワッチョイ dd01-RNo8)
2019/01/11(金) 23:12:06.09ID:TUR+WyZ10 カミカゼキャストについて教えてください。
不意にフレーズが浮かんだのです。
不意にフレーズが浮かんだのです。
964デフォルトの名無しさん (オイコラミネオ MM5e-pqTR)
2019/01/12(土) 00:03:01.76ID:i0P8FrwoM SOLID守ってんのかよちゃんと
965デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
2019/01/12(土) 01:42:52.85ID:Cfay/yS40 dynamic_castでnullptrなりbad-cast拾うのはお勧めできない。
966デフォルトの名無しさん (ワッチョイ f995-cxt4)
2019/01/12(土) 01:53:56.64ID:ygc4MJ1X0 >>965
nullptrでキャスト可否を確認するのは普通の使い方だろ…
nullptrでキャスト可否を確認するのは普通の使い方だろ…
967デフォルトの名無しさん (ワッチョイ dd01-kcJn)
2019/01/12(土) 01:57:02.82ID:WnhdkTsC0 cならともかくc++でキャストが必要になるのはどっかやばいことになってる可能性を考えた方がいい
968デフォルトの名無しさん (アウアウカー Sadd-7PRf)
2019/01/12(土) 03:58:57.87ID:xRzP6oFDa ライブラリの関数の引数が非constのchar配列で渡したい文字列がstd::stringに入ってるとき
.c_str()をconst_castしてるけどあかんの
.c_str()をconst_castしてるけどあかんの
969デフォルトの名無しさん (ワッチョイ c1a5-M9p6)
2019/01/12(土) 04:35:25.22ID:vq0ymgcL0 opencvを使用して画像処理を行ってるんですが画像データにAWGNを加える方法が分かりません
グレースケール化させて処理をしています
乱数生成などは理解しているんですがその乱数を使ってどのような値として輝度値に影響させるのかが分かってません
よろしくお願いします
visual c++を使用しています
グレースケール化させて処理をしています
乱数生成などは理解しているんですがその乱数を使ってどのような値として輝度値に影響させるのかが分かってません
よろしくお願いします
visual c++を使用しています
970デフォルトの名無しさん (ワッチョイ c1a5-M9p6)
2019/01/12(土) 04:53:59.45ID:vq0ymgcL0 >>969
Mat s;
src.convertTo(s, CV_16S);
Mat noise(s.size(), CV_16S);
randn(noise, 0, sigma);
Mat temp = s + noise;
temp.convertTo(dst, CV_8U);
今こう考えているんですがあっていますでしょうか
srcが原画像、dstがノイズ画像です
Mat s;
src.convertTo(s, CV_16S);
Mat noise(s.size(), CV_16S);
randn(noise, 0, sigma);
Mat temp = s + noise;
temp.convertTo(dst, CV_8U);
今こう考えているんですがあっていますでしょうか
srcが原画像、dstがノイズ画像です
971デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/12(土) 04:55:24.88ID:k4bgy+v70 画像処理のことなんか知らん
972デフォルトの名無しさん (ワッチョイ f9ff-VK1S)
2019/01/12(土) 05:30:28.09ID:DxcCYmak0 >>955
RTTIから実際の型情報を引っ張ってくる手段というとtypeidだね
void func(ios_base* ptr)
{
if(typeid(*ptr) == typeid(istream) { /* ... */ }
if(typeid(*ptr) == typeid(ostream) { /* ... */ }
}
RTTIから実際の型情報を引っ張ってくる手段というとtypeidだね
void func(ios_base* ptr)
{
if(typeid(*ptr) == typeid(istream) { /* ... */ }
if(typeid(*ptr) == typeid(ostream) { /* ... */ }
}
973デフォルトの名無しさん (ワッチョイ d646-kZrb)
2019/01/12(土) 08:53:04.29ID:Ma3Bi+e40974デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 09:04:15.07ID:VES9RvQbM975デフォルトの名無しさん (ワッチョイ d646-kZrb)
2019/01/12(土) 09:10:15.98ID:Ma3Bi+e40976デフォルトの名無しさん (ワッチョイ a57d-VK1S)
2019/01/12(土) 09:12:16.23ID:iREAiCU50 constついてないってことは内部で書き換えるという明確な意思表示だろ
977デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 09:29:29.58ID:VES9RvQbM Cのライブラリに依存してるとか普通にあるだろ
978デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 09:31:51.80ID:VES9RvQbM あと、ライブラリを作った奴のスキルの問題でconstを付けるべきときに付いてないのも仕事でやってりゃ普通にあるぞ
979デフォルトの名無しさん (ワッチョイ d646-kZrb)
2019/01/12(土) 09:34:33.47ID:Ma3Bi+e40 Cのライブラリに渡すのならなおらstd::stringの内部配列を渡すべきでないし
そのようなスキルの低い作者の作ったライブラリの何を信用しろと言われるのか
そのようなスキルの低い作者の作ったライブラリの何を信用しろと言われるのか
980デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 09:35:58.84ID:VES9RvQbM Cに一切ポインタ渡すなって?
凄いこと言うなあ
凄いこと言うなあ
981デフォルトの名無しさん (ワッチョイ dd01-VK1S)
2019/01/12(土) 10:17:58.63ID:D4HU0Own0 なにもそう煽らなくても
現場の人間か責任を負う立場の人間かで意見も異なるのがわかるだろうに
現場の人間か責任を負う立場の人間かで意見も異なるのがわかるだろうに
982デフォルトの名無しさん (アウアウエー Sa22-oec2)
2019/01/12(土) 10:56:59.61ID:Fa1DhIVTa 責任を負う立場の人間がconstがどうのなんて気にするわけないでしょw
「契約相手がそう言ってるなら信用すればよい。違っていたら相手の責任だ。」で終わりだよ
「契約相手がそう言ってるなら信用すればよい。違っていたら相手の責任だ。」で終わりだよ
983デフォルトの名無しさん (ワッチョイ dd01-kcJn)
2019/01/12(土) 11:23:34.77ID:WnhdkTsC0 まあ契約でそうなってても残業するのは作業者だからな。。
バカの言うことなんて信用しないで安全に倒した方が正解だわ。
バカの言うことなんて信用しないで安全に倒した方が正解だわ。
984デフォルトの名無しさん (スップ Sd7a-9pEX)
2019/01/12(土) 11:34:06.80ID:JcHNo1aqd constは付いてないですけど内部で書き換えはしません
なんて仕様書に書いてあるのか
なんて仕様書に書いてあるのか
985デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 12:01:03.58ID:VES9RvQbM void displayText(char* text);
文字列を表示します
text : 表示する文字列
これが仮にtextを書き換えてしまうとして、それをコピーで回避できたとしても、
そんなレベルのゴミがまともに機能するとは到底思えん
そんなことを言い出したらキリがない
文字列を表示します
text : 表示する文字列
これが仮にtextを書き換えてしまうとして、それをコピーで回避できたとしても、
そんなレベルのゴミがまともに機能するとは到底思えん
そんなことを言い出したらキリがない
986デフォルトの名無しさん (ワッチョイ 7a61-V+wx)
2019/01/12(土) 12:48:58.54ID:d9Np0YH50 >>942
1. 要素数を N としたとき、1つの要素の処理に要する時間が O(N) になるか、
O(1) などの違いなので、本質的にハードがいくら良くなっても解決する
問題ではない。O(N) のアルゴリズムは、N が大きくなった場合には、
ハードの良さを台無しにしてしまう。なので、アルゴリズムの選定はとても
重要。
2. 動的配列でも、配列の最後に追加する場合は、リンクリストと遜色ない速度は
出る可能性は十分あるが、配列の途中に追加する場合は、宇宙人でも無理。
3. 逆に、リンクリストの場合は、先頭から数えて、「k 番目の要素」にランダム
にアクセスすることを高速化することは、宇宙人でも無理。
4. 「宇宙人でも無理」の意味が理解できるためには、数学的感性が必要。
理解できない人には理解できないかもしれない。
1. 要素数を N としたとき、1つの要素の処理に要する時間が O(N) になるか、
O(1) などの違いなので、本質的にハードがいくら良くなっても解決する
問題ではない。O(N) のアルゴリズムは、N が大きくなった場合には、
ハードの良さを台無しにしてしまう。なので、アルゴリズムの選定はとても
重要。
2. 動的配列でも、配列の最後に追加する場合は、リンクリストと遜色ない速度は
出る可能性は十分あるが、配列の途中に追加する場合は、宇宙人でも無理。
3. 逆に、リンクリストの場合は、先頭から数えて、「k 番目の要素」にランダム
にアクセスすることを高速化することは、宇宙人でも無理。
4. 「宇宙人でも無理」の意味が理解できるためには、数学的感性が必要。
理解できない人には理解できないかもしれない。
987デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 13:04:53.68ID:VES9RvQbM >>986
問題は、リンクリストの途中に挿入したいとき、予め挿入位置の直前や直後のノードへのポインタを持っていなければならないことだ
そんなケースは現実の開発において殆ど無い
持っていなければ挿入位置に辿り着くまでにO(N)のシーケンシャルアクセスが発生する
そして、リンクリストはメモリアクセスの局所性が欠片もないデータ構造であり、
動的配列と比較してシーケンシャルアクセスのパフォーマンスは極めて劣悪である
問題は、リンクリストの途中に挿入したいとき、予め挿入位置の直前や直後のノードへのポインタを持っていなければならないことだ
そんなケースは現実の開発において殆ど無い
持っていなければ挿入位置に辿り着くまでにO(N)のシーケンシャルアクセスが発生する
そして、リンクリストはメモリアクセスの局所性が欠片もないデータ構造であり、
動的配列と比較してシーケンシャルアクセスのパフォーマンスは極めて劣悪である
988デフォルトの名無しさん (ブーイモ MM71-gN9V)
2019/01/12(土) 13:27:37.63ID:xzy8SRaPM テキストエディタのバッファ管理なんてのが
そのケースなんですけどね
そのケースなんですけどね
989デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 13:33:01.95ID:VES9RvQbM >>988
うん。レアケースだね。
うん。レアケースだね。
990デフォルトの名無しさん (ブーイモ MM71-gN9V)
2019/01/12(土) 13:34:27.13ID:xzy8SRaPM 我田引水の基地と判明
991デフォルトの名無しさん (ワッチョイ 4ea0-N8Dk)
2019/01/12(土) 13:40:34.57ID:Cfay/yS40 >>968
あかん。データを壊したくなかったら、別途コピーしたものを渡すべき。
あかん。データを壊したくなかったら、別途コピーしたものを渡すべき。
992さまよえる蟻人間 ◆T6xkBnTXz7B0 (ワッチョイ e501-wvXJ)
2019/01/12(土) 13:44:47.40ID:7KwgHC6s0 そろそろ次スレ
993デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/12(土) 14:46:05.16ID:k4bgy+v70 俺の上司とかconstって何?よけいなもんつけんなっていうおじさんだから内政のライブラリは参照でもconst付いてないよ
994デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/12(土) 15:06:09.76ID:k4bgy+v70 >>986
で、そのリンクリストがパフォーマンス的に勝るデータ量はおいくらだと思ってる?
大きめの画像くらいのサイズならデータの中央に挿入するとき、リンクをたどって挿入するより再確保、再配置した方がシーケンシャルアクセスになるから早いからな
ハードウェアの特性によりシーケンシャルなコピーは相当速いためPythonで一般的に扱う問題では挿入だろうが何だろうがリンクリストが勝ることはまずない
で、そのリンクリストがパフォーマンス的に勝るデータ量はおいくらだと思ってる?
大きめの画像くらいのサイズならデータの中央に挿入するとき、リンクをたどって挿入するより再確保、再配置した方がシーケンシャルアクセスになるから早いからな
ハードウェアの特性によりシーケンシャルなコピーは相当速いためPythonで一般的に扱う問題では挿入だろうが何だろうがリンクリストが勝ることはまずない
995デフォルトの名無しさん (ブーイモ MMe9-oec2)
2019/01/12(土) 15:20:37.52ID:T5Trh1u0M よくリストの特定位置に挿入を繰り返してリンクリストの方が速いというベンチマークがあるけど、あれもほとんど詐欺なんだよな
動的配列に多数の要素を挿入するなら挿入する要素数分ブロックコピーでずらしてから空けた隙間に書き込むだけだからリンクリストより圧倒的に速い
予め要素数が分からない場合は、いったん別の動的配列に追加していってから纏めて挿入すればよい
動的配列に多数の要素を挿入するなら挿入する要素数分ブロックコピーでずらしてから空けた隙間に書き込むだけだからリンクリストより圧倒的に速い
予め要素数が分からない場合は、いったん別の動的配列に追加していってから纏めて挿入すればよい
>>994
>再確保、再配置
ここ c++ だよね
再配置というのはコピーコンストラクタが働く、てことだよね
挿入のたびにコピーコンストラクタが動くなんて馬鹿のやることだ、という常識が通用するところだよね
>再確保、再配置
ここ c++ だよね
再配置というのはコピーコンストラクタが働く、てことだよね
挿入のたびにコピーコンストラクタが動くなんて馬鹿のやることだ、という常識が通用するところだよね
998デフォルトの名無しさん (ワッチョイ 4a32-VK1S)
2019/01/12(土) 15:42:46.28ID:k4bgy+v70 ユーザーが勝手に遅くすることは関係の無い話だ
その場合リストを使えばいいのでは
その場合リストを使えばいいのでは
999デフォルトの名無しさん (ブーイモ MM71-oec2)
2019/01/12(土) 16:00:10.74ID:iezJoARlM コピーが嫌なら別途ポインタの動的配列を持てばよい
それでもリンクリストよりは速いわ
それでもリンクリストよりは速いわ
1000デフォルトの名無しさん (ワッチョイ 7a01-CymP)
2019/01/12(土) 17:28:52.24ID:xSSM7u+V0 リストに親でも殺されたのか? w
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 16時間 29分 4秒
新しいスレッドを立ててください。
life time: 98日 16時間 29分 4秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 一律現金給付も消費減税もなし 高市内閣の経済対策に割れる世論 [蚤の市★]
- 高市早苗総理「農水大臣が大好きなおこめ券」 野党が“おこめ券”追及 [Hitzeschleier★]
- 「残クレ」でマイホーム、国が銀行向け保険 新型住宅ローン普及促す -日経 [少考さん★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★] [蚤の市★]
- 国分太一、地上波復帰は困難でもキャンプ趣味を活かしYouTubeで復帰するシナリオも「参戦すればキャンプYouTuberの人気の構図が一変」 [Ailuropoda melanoleuca★]
- 【MLB】ドジャース、最優秀救援3度&通算253セーブの守護神・ディアスを獲得! スコット低迷、佐々木朗希は先発復帰で [冬月記者★]
- 福島県の税部課税第2課主事、ショボいチケット詐欺を働き逮捕 [389326466]
- もしもスクリプトがAIで返信するようになれば
- 【高市早苗リスク】中国・広州のジブリ展覧会、開催延期 [115996789]
- 高市早苗さん、今度は韓国にも喧嘩を売ってしまう。 ほんまこいつwwww [271912485]
- 円安物価高無限ループ編突入 [452056903]
- 【高市悲報】日本人のTikTokアカウントが続々収益化剥奪中!!乞食どもざまああああああああwwwwwww [394917828]
