[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 11/17 15:19 / Filesize : 258 KB / Number-of Response : 1016
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part119



1 名前:デフォルトの名無しさん [2015/08/31(月) 18:19:04.13 ID:NE3NvROE.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part118
peace.2ch.net/test/read.cgi/tech/1435970316/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】 [転載禁止]©2ch.net
peace.2ch.net/test/read.cgi/tech/1439849418/

次期規格C++1zはこちら
C++14/C++1z 20
peace.2ch.net/test/read.cgi/tech/1410382924/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

755 名前:デフォルトの名無しさん [2015/10/03(土) 04:40:55.15 ID:HrivTQ+h.net]
Haskellは強力な型システムのおかげでコンパイルが通ればバグが無いことが保証されるといわれてるけどな。

756 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 04:44:51.70 ID:mgovDRA4.net]
何その都市伝説

757 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:02:15.82 ID:I2+KZq9W.net]
>>744
Java以下の速度のErlangがC++に勝てるわけねーだろwwww

758 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:12:08.92 ID:I2+KZq9W.net]
Erlangが使われれる理由は速度じゃなくて、強力なフォールトトレラント性
Haskellは遅延評価がある時点で並列向いてない
触った事あればすぐわかるだろうに、本当に恥ずかしい奴だな

759 名前:デフォルトの名無しさん [2015/10/03(土) 08:47:05.87 ID:QGdOGmK1.net]
そう、Erlangは強力なフォールトトレラント性が特徴。
生命維持装置のような何十年も安定して稼働し続けなければならない物には
Erlang以外使えない。
エラーが起きた時点で国際宇宙ステーションの全員が死ぬことになる。
再起動も許されない。
そういったミッションクリティカルな場所で使うためにErlangが開発された。

760 名前:デフォルトの名無しさん [2015/10/03(土) 08:50:57.42 ID:QGdOGmK1.net]
Erlangの最大の美点は静的検査によりコンパイルが通ればバグが無いことを保証できる点。
この特長によってJavascript並みの安全性を確保できるといわれている。

これはC++では絶対に実現できない。

761 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:52:47.18 ID:OaBps6Fz.net]
>Javascript並みの安全性
ここ笑うところなのかな

762 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:53:15.81 ID:I2+KZq9W.net]
Javascript並みの安全性?
ポエムは自分のブログでやってくれよキチガイ

763 名前:デフォルトの名無しさん [2015/10/03(土) 08:58:23.08 ID:QGdOGmK1.net]
また、Erlangは強力な並列性を持ち、2000万スレッドのベンチマークが行われたこともある。
C++プログラムとの比較でErlangは文字通り2000万倍の性能をたたき出した。
これは大きな差であり、現在のスーパーコンピュータではErlangが主流となっている。



764 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 08:59:57.30 ID:I2+KZq9W.net]
ErlangがC++より型付け強いってのも笑うところ
名前以外全く知らないのがわかる

765 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:06:44.71 ID:I2+KZq9W.net]
あ、これ本物のキチガイだ

766 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:07:13.61 ID:eQmk9cX0.net]
>>750

Erlangはチューリング完全じゃないのか?

767 名前:デフォルトの名無しさん [2015/10/03(土) 09:28:38.72 ID:QGdOGmK1.net]
C++が負けたのがそんなに悔しいですか。

768 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:35:22.34 ID:hNjBKdKI.net]
あーくやしいくやちくてしょんべんちびっちゃうわー

769 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 09:37:58.97 ID:RI5yhOba.net]
>>747
gccと比べたら確かに遅かったorz
ttp://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=erlang&lang2=gcc&data=u64q
しかし事はユーザーが書いたコード断片の実行速度ではないのかも知れぬ、

>>748
>Haskellは遅延評価がある時点で並列向いてない
ぬんで?遅延評価しようがすまいがimmutableなオブジェクトだけの世界なら排他とか生じないんじゃ…

770 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:00:51.34 ID:I2+KZq9W.net]
>>759
Haskellの遅延評価はあらゆる物に適用される
で、サンク取り払ってメモ化される度に止まって逆説的に向いてないというオチ
ここらへんは自分で制御しようと思えばできるから
飽くまで他の並列化を前提とした言語と比べて向いてないという意味

771 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:37:40.95 ID:R/xGcqGB.net]
>>745
でもコンパイルエラーを突き止めるのに専用のツールが必要だったり
コンパイルが通るまでに半年かかったりするんでしょ?

772 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 10:42:17.61 ID:R/xGcqGB.net]
>>748-749
フォールトトレラントのおかげで
内部で死にまくってても見過ごしてるだけというオチじゃなかろな

773 名前:age [2015/10/03(土) 11:02:06.53 ID:xcjdOcxh.net]
Queueに関して教えて下さい。

queue<BYTE> fifo;

として定義した場合、pushできるfifoの最大の深さはどこで確認できるのでしょうか?
fifoに書き込まれているバイト数はsizeで確認できますが、
深さに関する事が調べたのですがどこにも書かれていませんでした。

用途としては、10MByte位のFIFOを用意しておいて、
fifoに半分位たまったら一括でファイルにライトする様な処理を考えています。



774 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:09:56.72 ID:OaBps6Fz.net]
深さとサイズがどう違うんだ

775 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:36:19.09 ID:UaQHAHfU.net]
その場合は、dequeを調べればいいんじゃないかな?

776 名前:デフォルトの名無しさん [2015/10/03(土) 11:38:25.79 ID:JIliozMV.net]
自分がハッカーかどうかわからないのですが
ハッカーになると自分はハッカーであるとわかるものなんですか?
それとも人に言われてはじめて気づくものなんでしょうか?

777 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:49:29.97 ID:UaQHAHfU.net]
ハッカーはハッキングします。
あなたはハッキングしましたか?

778 名前:デフォルトの名無しさん [2015/10/03(土) 11:52:29.29 ID:JIliozMV.net]
それはクラッカー

779 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 11:56:32.43 ID:y6+evVSu.net]
あたり前だ

780 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 12:05:26.41 ID:UaQHAHfU.net]
ハッキングによって入手した情報を悪用し、罪を犯すのがクラッカーです。
ハッカーは罪を犯すことを目的にハッキングはしません。

781 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 14:23:52.05 ID:bfkpTtOm.net]
まあ、俺クラスになると自分がハッカーだと自覚できてるな

782 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 14:45:00.58 ID:bKUFTYSg.net]
俺がこんなに強いのも…

C++関係ないね。

783 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 15:03:31.31 ID:6CgBohu1.net]
カーしか共通点無い



784 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 15:04:24.02 ID:6CgBohu1.net]
クラッカーの話題が出てたのか。スマン

785 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:05:55.00 ID:8AFtPGV4.net]
まあ、俺クラスになると自分が馬っ鹿ーだと自覚できてるな

786 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:08:13.17 ID:DbjSwrzl.net]
禿げてないとハッカーにはなれない

787 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:09:09.20 ID:4asnCA7K.net]
俺クラスになるとその点も問題ない

788 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:12:08.77 ID:H2im6CWF.net]
自作クラス最強説

789 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 16:46:46.05 ID:hZCkGPov.net]
やっぱりナビスコだな

790 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 17:03:29.86 ID:5Y3yXyVr.net]
C++使ってる時点で十分ハッカーだと思うけど。

791 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 18:24:19.53 ID:bfkpTtOm.net]
>>779
それはクラ…リッツとかオレオ!

792 名前:デフォルトの名無しさん [2015/10/03(土) 20:23:09.16 ID:HRif353B.net]
ハッカーの大部分が悪いことをするので、ハッカーは悪事を働く人を意味するようになった。
そこで、ハッカーたちはクラッカーという新しい言葉を作り、俺はハッカーだから
悪いことをしていないと取り調べで言うようになった。

793 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 20:24:08.26 ID:I2+KZq9W.net]
リンゴマークをこよなく愛する



794 名前:デフォルトの名無しさん [2015/10/03(土) 20:27:19.39 ID:25KCQVnt.net]
ハッカーの彼女ってペンギンだろ

795 名前:デフォルトの名無しさん [2015/10/03(土) 20:28:46.01 ID:HRif353B.net]
クラッカーという言葉を作って、犯人はクラッカーだと言うようになった。

796 名前:デフォルトの名無しさん [2015/10/03(土) 20:30:44.43 ID:HRif353B.net]
電話を無料でかける装置を50ドルで売った。
これは良く売れた。
マンハッタンのビジネスマンが一日に50台注文することもあった。
この利益でいくつかのフリーソフトウェアが完成した。

797 名前:デフォルトの名無しさん [2015/10/03(土) 21:34:06.93 ID:GmUX5JOa.net]
2つの矩形(XYWH)を覆う四角形Z(XYWHR)を求めるにはどのような計算式を書けばいいですか?

798 名前:デフォルトの名無しさん [2015/10/03(土) 21:40:46.15 ID:8iRLWTDj.net]
std:::min と std::max を使うと簡単だよ

799 名前:デフォルトの名無しさん [2015/10/03(土) 21:47:00.05 ID:GmUX5JOa.net]
>>788
矩形から矩形ならそれで出来ますが、矩形から傾きのある矩形を求める方法が知りたいです

800 名前:デフォルトの名無しさん [2015/10/03(土) 21:48:38.22 ID:DW8kiwr4.net]
ちょっと図で書いてみて

801 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 21:53:58.07 ID:wd3SBpbJ.net]
傾きありだと飼いは無数にあるから条件が必要

802 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 21:58:00.99 ID:8iRLWTDj.net]
>>789
これでどう?
動画も有るよ
sssiii.seesaa.net/article/194921654.html

803 名前:デフォルトの名無しさん [2015/10/03(土) 22:07:52.43 ID:GmUX5JOa.net]
シューティングゲームのすり抜け防止に使いたい
1F前の矩形+現在の矩形で矩形を求めて判定した後高速判定)、当たっていれば傾きありの矩形で判定したい(厳密判定)



804 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:18:40.75 ID:eQmk9cX0.net]
頂点8つだし、厳密なものでなくていいなら、最も遠い頂点間を長径とする長方形でいいんじゃないの?

805 名前:デフォルトの名無しさん [2015/10/03(土) 22:30:23.52 ID:GmUX5JOa.net]
線分でしてみます。

806 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:31:15.33 ID:RI5yhOba.net]
指定した点Pが凸多角形Xの内側か外側かはベクトルの内積で判定できるので、
凸多角形Yが凸多角形Xと重なりを持つかどうかなら、Yの辺を構成する全部の画素について上と同じことをやれば良い、

もし、YとXが非接触の状態から、Yの内側にXがいきなり飛び込むケースが在る場合は、
念のためXとYを入れ替えた判定もやる
単純にビットマップのANDでも取る方が幸せ鴨、

本当かどうかは知らん

807 名前:デフォルトの名無しさん mailto:sage [2015/10/03(土) 22:34:55.68 ID:RI5yhOba.net]
訂正
誤:単純にビットマップのANDでも取る方が幸せ鴨、
正:が、小さい判定領域であればそこまでやるより単純にビットマップのANDでも取る方が幸せ鴨、

808 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 01:30:06.66 ID:RUTa+wSI.net]
>>793
簡単
頂点を引き伸ばせばよい
uploda.cc/img/img56100238268d5.png
↑適当な図

809 名前:デフォルトの名無しさん [2015/10/04(日) 03:21:04.05 ID:ZIaV4muE.net]
>>798
そういう図は何で描いてるの?

810 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 04:42:29.50 ID:r2m0aNE2.net]
C++スレなんだからC++じゃないの
ちな、このレスもC++で書いてる

811 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:03:01.78 ID:J4whK/1Y.net]
JavaScriptの、isPointInPath のように、
その点が、図形のパス内にあるかどうか、判別できないの?


それか、RGBAのアルファ値の、250〜255を、
アルファ値として使わず、
物体の判定用フラグとして使うとか

812 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 10:06:56.41 ID:yZJnSbHB.net]
>250〜255を、アルファ値として使わず

30年前のC++使いが考えそうなクソ設計だな

813 名前:デフォルトの名無しさん [2015/10/04(日) 10:40:50.29 ID:+wQ6czRK.net]
内積で判定するのってどうやるの?



814 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 11:26:51.95 ID:r2m0aNE2.net]
>>803
言いたかったのは
ttp://www.nttpc.co.jp/technology/measurement.html
の「線分と点の位置関係の判定」の部分
(最後の方の簡単な式。前半の大量の式は内外判定ではなくて距離の算出方式の解説に費やされている。

だが、上の記事の第2回目にさらにいろいろ書いてあったわ;
ttp://www.nttpc.co.jp/technology/number_algorithm.html

世間は広大だわ、

815 名前:デフォルトの名無しさん mailto:sage [2015/10/04(日) 19:47:31.94 ID:T8eNBhl9.net]
boost::geometry に何かないの?

816 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:18:19.75 ID:VFapxPBu.net]
VC++2015にて

std::map<std::wstring, std::wstring> testmap;
testmap[L"Hello"] = L"World";
const std::map<std::wstring, std::wstring>& testmap2 = testmap;
std::wstring val = testmap2[L"Hello"];

この4行目でC2678
二項演算子 '[': 型 'const std::map<std::wstring,std::wstring,std::less<_Kty>,std::allocator<std::pair<const _Kty,_Ty>>>' の
左オペランドを扱う演算子が見つかりません (または変換できません)

が発生するんだけど、要は「鍵と要素がwstring」で「constな」mapを上記のようにリテラル文字列で[]参照する書き方ってできる・・・?
const std::wstring ws = L"Hello";
std::wstring val = testmap2[ws];
とかやってもだめだった

エラーの詳細としては、mapのoperator[]に「wstring&」と「wstring&&」の両方があって曖昧だからNGらしい
そもそもconstなmapなのに要素変更にも使える[]を呼んでいるのがダメってことかいね?const外せば動くし

817 名前:デフォルトの名無しさん [2015/10/05(月) 14:26:27.32 ID:9/62paZL.net]
同じ質問が最近にもあったような

818 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:37:36.36 ID:VFapxPBu.net]
本スレの過去をmapで検索してもそれらしき件は見あたらず・・・(過去ログは読めない)

819 名前:デフォルトの名無しさん [2015/10/05(月) 14:41:46.58 ID:HSAikNuy.net]
>>806
testmap[L"jerk"];
これだけで副作用が生じるわけで諦めるしかあんめー

std::wstring val = testmap2.find(ws)->second;
あえてendが返ったか見てないけど、
それはoperator[]と同質の問題ってことで

820 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:43:47.49 ID:zntwOtDH.net]
std::mapはconst版( operator[](const Key&) const )は無いよ−。
キーがなかったら新しい値を挿入するという動作だから。
ja.cppreference.com/w/cpp/container/map/operator_at
findしましょ。

821 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 14:48:47.23 ID:VFapxPBu.net]
そうか、[]の時点で要素増えるからダメか

822 名前:デフォルトの名無しさん mailto:sage [2015/10/05(月) 23:43:18.77 ID:EGogu2NJ.net]
C++の文法はクソだからな
コンパイラーが手を抜いてプログラマーが不利益を被る良い例だ

823 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 00:10:39.56 ID:1Ze1Ogug.net]
>>806 https://www.google.co.jp/search?q=std+map+at



824 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:05:09.41 ID:CpsQkQ9O.net]
C++の仕様がいい加減だからなのか、
regexのマルチライン対応なんかは、VCは対応でGCCは非対応だからな
行頭の^が文字列の頭になると行頭じゃえらい違いだよな

825 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:23:22.63 ID:EO5+cWSu.net]
STLに問題があるようだな

826 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 01:25:23.49 ID:eWd5i2Y2.net]
>>812
文法はあまり関係ないけど?
低脳が口挟んでも

827 名前:pかくだけだぞ []
[ここ壊れてます]

828 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 11:20:11.67 ID:k9h8FU3j.net]
むしろ文法があんなだから
コンパイラは手を抜けないとも

829 名前:デフォルトの名無しさん [2015/10/06(火) 11:54:27.84 ID:+syJpT4+.net]
文法じゃなくて意味が糞なんだよな

830 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 12:27:05.15 ID:Zn1/MkM8.net]
そうそう、mapで思い出したけど
テーブルって実行時に初期化したくないやん

ある程度の大きさのmapの初期化を出来るだけ実行時の生成コストを少なくするように記述するにはどうしたらいいのかな?

環境によって違うけど
構造体の配列とかだと、初期化子リスト付けとくと、.dataセクションに即値が書かれてて
初期化時にはそれをコピーしてポインタをセットして準備完了

それと同じようなことをmapでやって見たい

c++11だとmapでも初期化子リスト使えるからそれでいけるのかな?
何年か前にg++でコンパイルして.dataセクション見てみたけど当時はmapの即値になってるように見えなかった

c++03とかだとどんな手があるんだろう??

831 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 12:35:26.69 ID:k9h8FU3j.net]
そうそう、mapで思い出したけど
テーブルって実行時にメモリ使いたくないやん

ある程度の大きさのmapは実行時にメモリのコストが大きいけどどうしたらいいのかな?

https://research.preferred.jp/2011/07/stllike-containers/

832 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 16:00:02.92 ID:wWQ1shVW.net]
初期化はだって実行時じゃないか?

833 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 20:34:00.60 ID:hYLbQ3+q.net]
どうしてもdataセクションにそのままアクセスしたいのであればキーと要素を持つクラスをキーでソート済みの配列で書いてstd::mapのconstメンバ関数と同じものを持つラッパークラス書くとかかな



834 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:14:23.94 ID:mXRqVUnf.net]
>>821
要するに map を実行時に構築するんじゃなくてコンパイル時に構築しといて実行時はメモリーコピーだけにならんもんか?
っつーことでしょ
たまに俺もそう思うことがある

835 名前:デフォルトの名無しさん [2015/10/06(火) 21:27:26.34 ID:jUDOLtzl.net]
確かにねー
そんな気することよくあるよな
constexprなコンストラクタでどこまでできるのかと

836 名前:デフォルトの名無しさん [2015/10/06(火) 21:34:08.29 ID:MCB0h3nq.net]
シリアライズかデータベースつかえ

837 名前:デフォルトの名無しさん [2015/10/06(火) 21:37:47.97 ID:MCB0h3nq.net]
>>820の意図するところと、>>823は別で>>820は省メモリにしたいって話だろ。

838 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 21:54:53.32 ID:2Pt1OMoQ.net]
配列に入れて線形探索
要素数が小さいうちは線形探索はもともと他より致命的に悪いわけではないし
今日日のCPUならキャッシュと分岐予測とOOOの華麗な連携プレーを目の当たりにできる

839 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 22:43:09.92 ID:8+tr+OYB.net]
これは遅くなりそうだからってがんばってマップ作ったら
線形探索ゴリ押しの方が速かったことならある

840 名前:デフォルトの名無しさん [2015/10/06(火) 22:47:58.27 ID:Cu8Zkmdv.net]
二分検索じゃだめなの

841 名前:デフォルトの名無しさん mailto:sage [2015/10/06(火) 23:07:19.25 ID:hYLbQ3+q.net]
std::sortもstd::lower_bound もあるんだからバイナリサーチぐらいしようぜと

842 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 05:07:06.28 ID:vlTfjNXN.net]
>>826
>>823>>819

> ある程度の大きさのmapの初期化を出来るだけ実行時の生成コストを少なくするように記述するにはどうしたらいいのかな?

の話だよ
データベースとか頓珍漢過ぎ

843 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 07:13:23.42 ID:JsRvQDZJ.net]
コードの工夫で初期化コストを改善するのではなく
データベースでの永続保存という別手法での改善方法もあり得ることを示すことが
それほどトンチンカンとも思えないが



844 名前:デフォルトの名無しさん [2015/10/07(水) 08:23:24.99 ID:PbTUGDDG.net]
mapはエントリーを追加できるんだからドンダケ待ってもそうはならないと思。

845 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 08:34:53.72 ID:q7nyuwNL.net]
>>832
なにを改善したいかも理解してないアホ w

846 名前:デフォルトの名無しさん [2015/10/07(水) 08:52:16.49 ID:d/PBWwg/.net]
static_mapみたいな名前になるんだろか。

847 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 09:44:01.58 ID:0iwSPjqO.net]
Rubyでは、Hashの要素数が増えていくと、再編成される

バケット数は、2の累乗付近の素数を使う。
つまり、倍々に増やしていく
8+3, 16+3, 32+5, 64+3, 128+3, 256+27, 512+9...

1つのバケットには、平均して5つの要素を入れる(衝突)。
11*5=55, 19*5=95, 37*5=185...

つまり要素数が、56, 96, 186...個になると、
バケット数を増やして、再編成する

普段、1万個の要素を追加するのに、8msかかるが、
再編成するタイミングでは、20msかかる。
要素数が増えていけば、もっとかかるだろう

848 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 11:02:09.32 ID:8pl0pVx/.net]
C++のスレでRubyとかアホなの?
環境も書かずに2msとかアホなの?
C++なら1万個追加で1msだ

849 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 11:19:07.99 ID:vH7WjwMJ.net]
昔、某オンラインゲームの支援ツール作って、プロセスメモリ上にあるVC++2008実装のstd::mapの
テーブルを直接アクセスするコードを書いたのを思い出した

850 名前:デフォルトの名無しさん [2015/10/07(水) 11:20:45.74 ID:Qd1lXfpw.net]
そういった成功体験は捨てたほうがいい

851 名前:836 mailto:sage [2015/10/07(水) 11:50:30.95 ID:0iwSPjqO.net]
「Rubyのしくみ」という本に書いてあるのだが、
RubyのHashは、Peter Moore が考案したもの。
C++でも、彼のロジックを使っているのなら、同じかなと思って

mapの要素数が増えていくと、
バケット数を増やして、再編成されるので、
その際、全要素が移動するから、どうしても遅くなる

だから、メモリ的には損だが、
最初から大きめのバケット数を確保しておけばよい

852 名前:デフォルトの名無しさん [2015/10/07(水) 13:03:07.75 ID:gQOBln3k.net]
ん、std::hashって算法まで規定されてたっけ?
17.6.3.4を見る限りそうではなさそうだが

853 名前:デフォルトの名無しさん [2015/10/07(水) 14:19:20.92 ID:4iZc7XH3.net]
struct hoge{};
const hoge h;
をコンパイルすると
error: uninitialized const 'h'
と出ます。何故ですか
constを外すとコンパイルできます。GCC4.4です。



854 名前:デフォルトの名無しさん mailto:sage [2015/10/07(水) 15:58:16.91 ID:2UUkd3/F.net]
定数は値が書き換えられないわけで
最初の時点で値を代入しなかった場合、「お前なんのために定数宣言したの?」って突っ込まれてる

855 名前:デフォルトの名無しさん [2015/10/07(水) 16:15:42.33 ID:4iZc7XH3.net]
vcではエラーにならないのは何故ですか
どっちが正しいですか






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<258KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef