次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part132
http://mevius.5ch.net/test/read.cgi/tech/1507561894/
このスレもよろしくね。
【初心者歓迎】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
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
探検
C++相談室 part133
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 1fcf-H1rY)
2017/11/24(金) 16:52:50.43ID:WoNXR2ax0657デフォルトの名無しさん (ワッチョイ ff12-7LW1)
2017/12/23(土) 23:37:21.27ID:GYIu1tWX0 >>651
どうでもいいが知恵袋とのマルチだな
どうでもいいが知恵袋とのマルチだな
658デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/23(土) 23:51:11.43ID:0b4Aycyz0659デフォルトの名無しさん (ワッチョイ cf81-jmlw)
2017/12/23(土) 23:53:25.60ID:Rr/nHXks0 >>658
横レスだけどgrepとか結構すごいぞ
横レスだけどgrepとか結構すごいぞ
660デフォルトの名無しさん (ワッチョイ bf7e-buzn)
2017/12/23(土) 23:57:45.94ID:gq/ENgXB0 そこら辺は古すぎるので現在の常識とは異なる場合があると思うけど
661デフォルトの名無しさん (ワッチョイ ff12-7LW1)
2017/12/24(日) 00:00:12.41ID:ZACWf2Ud0 std::vector::erase - cppreference.com
http://en.cppreference.com/w/cpp/container/vector/erase
>Invalidates iterators and references at or after the point of the erase, including the end() iterator.
翻訳には肝心のモンが抜けてるんじゃあねえのか?
複数形のsとか
http://en.cppreference.com/w/cpp/container/vector/erase
>Invalidates iterators and references at or after the point of the erase, including the end() iterator.
翻訳には肝心のモンが抜けてるんじゃあねえのか?
複数形のsとか
662デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 00:06:07.20ID:buA98p4W0 >>659
サンクス。見てみているが、まずGNUはこのコーディングルールがな…
ちなみにこれ、今時ハイライト(色づけ)されないのは何とかならないのかね。
http://git.savannah.gnu.org/cgit/grep.git/tree/src/grep.c
サンクス。見てみているが、まずGNUはこのコーディングルールがな…
ちなみにこれ、今時ハイライト(色づけ)されないのは何とかならないのかね。
http://git.savannah.gnu.org/cgit/grep.git/tree/src/grep.c
663デフォルトの名無しさん (ワッチョイ cf81-jmlw)
2017/12/24(日) 00:10:15.35ID:M6vPWOvg0664デフォルトの名無しさん (ワッチョイ bf7e-buzn)
2017/12/24(日) 00:13:30.13ID:4npOP+p60 Linusはプログラマの頂点ではないしGNUは最も優れたプロジェクトではない
既に手本にならない部分は多い
既に手本にならない部分は多い
665デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 00:15:10.13ID:CHij32pE0 >>655
>元々指していた「削除された要素」ではないことを「無効」と表現している。
そうなの?
規格ではclearとかresizeとかでも無効になる(invalidate)と書いてあるしeraseがそれと何か違うようにも見えないし、無効なiteratorをdereferenceするのは未定義だとも書いてあるように見えるけど。
>つまり、ド頭から密に詰められていることを規定されているので、
>削除すれば当然次の要素が入るに決まっているし、
>(これは君は正しく理解しているが)reallocはなされないし、
>vec[0]についてもアクセス時点での先頭要素が取得できるに決まっている。←多分君はここを勘違いしている
ポインタならそうだろうけどvectorのiteratorでも規格上保証されてるの?
ttps://stackoverflow.com/questions/45758659/does-stdvectorerase-really-invalidate-the-iterator-at-the-point-of-erase
>元々指していた「削除された要素」ではないことを「無効」と表現している。
そうなの?
規格ではclearとかresizeとかでも無効になる(invalidate)と書いてあるしeraseがそれと何か違うようにも見えないし、無効なiteratorをdereferenceするのは未定義だとも書いてあるように見えるけど。
>つまり、ド頭から密に詰められていることを規定されているので、
>削除すれば当然次の要素が入るに決まっているし、
>(これは君は正しく理解しているが)reallocはなされないし、
>vec[0]についてもアクセス時点での先頭要素が取得できるに決まっている。←多分君はここを勘違いしている
ポインタならそうだろうけどvectorのiteratorでも規格上保証されてるの?
ttps://stackoverflow.com/questions/45758659/does-stdvectorerase-really-invalidate-the-iterator-at-the-point-of-erase
666デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 00:17:58.25ID:buA98p4W0 >>661
> including the end() iterator.
いや、これが抜けてる方が大問題だろ。
まあ広い意味では「それ以降の要素を指すイテレータ」に含まれるとも言えなくもないが、
これについては明記されるべきだね。
しかしこれだとイテレート中に削除していいのか?と心配になるが、
直ぐ下のサンプルコードで「偶数番目の要素を削除」してるからいけるんだろうね。
てか初心者なら、この辺のサンプルコードから出発した方がいいよ。いろんな意味で。
ちゃんと公式な使い方してあるし。(当然戻り値をイテレータに代入している)
> // Erase all even numbers (C++11 and later)
> for (auto it = c.begin(); it != c.end(); ) {
> if (*it % 2 == 0) {
> it = c.erase(it);
> } else {
> ++it;
> }
> }
> http://en.cppreference.com/w/cpp/container/vector/erase
> including the end() iterator.
いや、これが抜けてる方が大問題だろ。
まあ広い意味では「それ以降の要素を指すイテレータ」に含まれるとも言えなくもないが、
これについては明記されるべきだね。
しかしこれだとイテレート中に削除していいのか?と心配になるが、
直ぐ下のサンプルコードで「偶数番目の要素を削除」してるからいけるんだろうね。
てか初心者なら、この辺のサンプルコードから出発した方がいいよ。いろんな意味で。
ちゃんと公式な使い方してあるし。(当然戻り値をイテレータに代入している)
> // Erase all even numbers (C++11 and later)
> for (auto it = c.begin(); it != c.end(); ) {
> if (*it % 2 == 0) {
> it = c.erase(it);
> } else {
> ++it;
> }
> }
> http://en.cppreference.com/w/cpp/container/vector/erase
667デフォルトの名無しさん (ワッチョイ bf7e-buzn)
2017/12/24(日) 00:17:58.87ID:4npOP+p60 std::vector の場合はこう、std::list の場合はこう、とかいう知識はあまり意味がないのではないか?
erace() したら、erace() したところおよびその後を指していたイテレータ(=ポインタ)は使えなくなる、くらいで一括するのが妥当だと考える。
erace() したら、erace() したところおよびその後を指していたイテレータ(=ポインタ)は使えなくなる、くらいで一括するのが妥当だと考える。
669デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 00:23:13.30ID:DlgRUKPs0 細かい場合分けするのはプログラミング的に悪だと思ってる。
統合的に丸っと処理できると気持ちいい。
なのでちょっと粒度を上げてSTLの作法というものを考えた方がイイ。
統合的に丸っと処理できると気持ちいい。
なのでちょっと粒度を上げてSTLの作法というものを考えた方がイイ。
670デフォルトの名無しさん (ワッチョイ cf81-jmlw)
2017/12/24(日) 00:39:36.50ID:M6vPWOvg0 >>667
無理ならそういえばいいのに
無理ならそういえばいいのに
671デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 00:49:18.45ID:buA98p4W0 >>665
つか、君は何に文句を言っているのだ?そこにそのまま書いてあるだろ。
> When describing iterator invalidation,
> the C++ standard takes the simplifying assumption that iterators refer to elements,
> and a valid iterator value always refers to same element.
> Invalidating references, pointers or iterators to an element all follow the same rules. (The exception is the end iterator).
>
> Clearly references or pointers to the erased element are invalidated by a call to erase,
> thus under the standard's simple rules so are all iterators.
> It could have described what new element must be moved in place abd substituted what iterators refer to,
> but the writers of the standard chise not to go there. They instead simply dictated the iterator was invalid.
eraseでvecが移動しないことは保証されてるだろ。
当然vec[0]は削除後の先頭要素を指す。
ただしそもそも削除後にイテレータを再代入してないコートについては知るかボケだろ。
それについてもそこにモロに書いてあるし。
そのページは俺の言い分を全く書いてあるような物なんだが、何が言いたいんだ?
つか、君は何に文句を言っているのだ?そこにそのまま書いてあるだろ。
> When describing iterator invalidation,
> the C++ standard takes the simplifying assumption that iterators refer to elements,
> and a valid iterator value always refers to same element.
> Invalidating references, pointers or iterators to an element all follow the same rules. (The exception is the end iterator).
>
> Clearly references or pointers to the erased element are invalidated by a call to erase,
> thus under the standard's simple rules so are all iterators.
> It could have described what new element must be moved in place abd substituted what iterators refer to,
> but the writers of the standard chise not to go there. They instead simply dictated the iterator was invalid.
eraseでvecが移動しないことは保証されてるだろ。
当然vec[0]は削除後の先頭要素を指す。
ただしそもそも削除後にイテレータを再代入してないコートについては知るかボケだろ。
それについてもそこにモロに書いてあるし。
そのページは俺の言い分を全く書いてあるような物なんだが、何が言いたいんだ?
672デフォルトの名無しさん (ワッチョイ cf8a-LdUP)
2017/12/24(日) 01:05:17.93ID:pxiUCfvD0 そもそもeraseするならvectorなんか使うな。よっぽど小さいvectorじゃない限り
eraseは縮小操作だからリアロケーションは起きないけどその時何が起こるのか理解してるのか?
理解できないならお前はC++を使えないやつ
eraseは縮小操作だからリアロケーションは起きないけどその時何が起こるのか理解してるのか?
理解できないならお前はC++を使えないやつ
673デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 01:25:35.46ID:buA98p4W0 >>659
こんなもんじゃね?みたいな感じなんだが。
決して理解したわけではなく、雰囲気だけしか見てないが。
C特有のstructの嵐でもなく、
今ならIDEが警告出してくるほどのif文等のネストもなく、
意味不明なマ黒魔術使いまくりでもない。
グローバルが嵐になっているが、これはCUIツールだから大して問題ないし。
色が付いてないのとコーディングルールがアレなので詳しく読む気にならないが、
整形ツール通せば結構読めるコードのような気がする。
こんなもんじゃね?みたいな感じなんだが。
決して理解したわけではなく、雰囲気だけしか見てないが。
C特有のstructの嵐でもなく、
今ならIDEが警告出してくるほどのif文等のネストもなく、
意味不明なマ黒魔術使いまくりでもない。
グローバルが嵐になっているが、これはCUIツールだから大して問題ないし。
色が付いてないのとコーディングルールがアレなので詳しく読む気にならないが、
整形ツール通せば結構読めるコードのような気がする。
674デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 01:43:03.65ID:CHij32pE0 >>671
>eraseでvecが移動しないことは保証されてるだろ。
>当然vec[0]は削除後の先頭要素を指す。
誰もそんなことは問題にもしてないんだが大丈夫?
偉そうなことを言ってる割には全然読めてないんだなあ
>eraseでvecが移動しないことは保証されてるだろ。
>当然vec[0]は削除後の先頭要素を指す。
誰もそんなことは問題にもしてないんだが大丈夫?
偉そうなことを言ってる割には全然読めてないんだなあ
675デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 01:44:55.52ID:buA98p4W0 >>674
日本語でおk
日本語でおk
676デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 02:04:36.00ID:CHij32pE0677デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 02:08:57.97ID:buA98p4W0 >>676
韓国人死ね
韓国人死ね
678デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 02:11:04.69ID:DlgRUKPs0 ん?これは痛い。
>>634
ite = vec.begin()
++ite;
ite = vec.erase(ite);
--ite;
であれば ite == vec.begin(); は保障できるが、
vec.erase(ite)
とした場合の ite の値は、コンテナ vec のどこかを指している保障はないのでは?
したがって、--ite もどこを指しているか保障がないのでは?
典拠を示してほしい
ite = vec.begin()
++ite;
ite = vec.erase(ite);
--ite;
であれば ite == vec.begin(); は保障できるが、
vec.erase(ite)
とした場合の ite の値は、コンテナ vec のどこかを指している保障はないのでは?
したがって、--ite もどこを指しているか保障がないのでは?
典拠を示してほしい
680デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 02:19:46.66ID:DlgRUKPs0 イテレータを削除したときあり得る処置。
一個目。
メモリの再確保相当のことをして再構築する。
二個目。
尻尾の要素をムーブして詰めて最後の要素を開ける。
このどっちかだと思う。
2個目だとイテレータのロストはしないかもしれないが、
1個目だとアドレスが変わっちゃうのでイテレータが保持しているアドレスは無効。
両方あり得るのでeraseの戻り値はちゃんと受け取ろう。
一個目。
メモリの再確保相当のことをして再構築する。
二個目。
尻尾の要素をムーブして詰めて最後の要素を開ける。
このどっちかだと思う。
2個目だとイテレータのロストはしないかもしれないが、
1個目だとアドレスが変わっちゃうのでイテレータが保持しているアドレスは無効。
両方あり得るのでeraseの戻り値はちゃんと受け取ろう。
681デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 02:38:56.42ID:buA98p4W0 >>680
お前もちゃんと読めよ
> 戻り値
> 削除された要素の次の要素を指すイテレータを返す。
> そのような要素が存在しない場合は、end()を返す。
> さらに、削除された要素以降の要素の数と同じ回数のTのムーブ代入演算子が呼ばれる。
> https://cpprefjp.github.io/reference/vector/erase.html
つかC++にはGCねえんだよ
Java鹿死ね
お前もちゃんと読めよ
> 戻り値
> 削除された要素の次の要素を指すイテレータを返す。
> そのような要素が存在しない場合は、end()を返す。
> さらに、削除された要素以降の要素の数と同じ回数のTのムーブ代入演算子が呼ばれる。
> https://cpprefjp.github.io/reference/vector/erase.html
つかC++にはGCねえんだよ
Java鹿死ね
682デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/24(日) 02:50:37.41ID:3RxhFT7A0 規格にきっちりかっちり書いてある挙動について
あり得る処置(キリッ
とか抜かして適当な憶測垂れ流す奴がいるんだな
あり得る処置(キリッ
とか抜かして適当な憶測垂れ流す奴がいるんだな
683デフォルトの名無しさん (ワッチョイ cfe8-HMcx)
2017/12/24(日) 02:59:23.68ID:Vn0hcFlX0 なんか話が混ざってる気がするけど、eraseに渡した引数のイテレータの話じゃないの?
684デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 03:05:24.20ID:CHij32pE0 >>681
>○ vec.erase(ite)後にiteが指すのは「次の要素」であり、
>元々指していた「削除された要素」ではないことを「無効」と表現している。
とか書いちゃう人が言っても説得力ないけどねw
>○ vec.erase(ite)後にiteが指すのは「次の要素」であり、
>元々指していた「削除された要素」ではないことを「無効」と表現している。
とか書いちゃう人が言っても説得力ないけどねw
685デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 05:55:00.21ID:DlgRUKPs0 >>681
GCどっから出てきた。韓国人といい。話が飛躍しすぎ。
GCどっから出てきた。韓国人といい。話が飛躍しすぎ。
686デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 06:05:35.39ID:DlgRUKPs0 >>682
小出しにしないでブッコンで行け。
小出しにしないでブッコンで行け。
687デフォルトの名無しさん (ワッチョイ ff34-bbRz)
2017/12/24(日) 09:02:08.85ID:LF0oxcI10 昔のvectorは同一メモリ上にデータが配置されていることは保障されていなかったから昔の環境でなにか作る場合は注意したほうがいい。
そういう処理系が存在するのかどうか疑問だけど。
そういう処理系が存在するのかどうか疑問だけど。
688デフォルトの名無しさん (ワッチョイ f378-tRgI)
2017/12/24(日) 10:15:11.27ID:QEOGdK3r0689デフォルトの名無しさん (ワッチョイ f378-tRgI)
2017/12/24(日) 10:18:18.02ID:QEOGdK3r0 >>687
え??
昔ってどのくらいのことを言っている?
そもそも連続領域でなければリストと同じ特性になってしまい
配列であることのメリットが完全に失われるだろ
ポインタの配列になっていて実体はばらばらでもよいということならわかるが
え??
昔ってどのくらいのことを言っている?
そもそも連続領域でなければリストと同じ特性になってしまい
配列であることのメリットが完全に失われるだろ
ポインタの配列になっていて実体はばらばらでもよいということならわかるが
690デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 10:26:48.95ID:buA98p4W0 >>649
横だが。
ソース見ろとよく言っている奴が居るので偶には、ってやってるんだが、
どこにあるかわかりにくい上に何だかなあ、なコードなんだが。
とりあえずこれでいいのか?
https://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a01116_source.html
そしてiterator.cがどこにあるか分からないという、、、
同様の奴もいるが、あまりオススメはされてない。
https://stackoverflow.com/questions/4304783/c-vector-source-code
> 00402 iterator
> 00403 erase(iterator __position)
> 00404 {
> 00405 typename _Base::iterator __res = _Base::erase(__position.base());
> 00406 return iterator(__res, this);
> 00407 }
> 上側URL
__position.base()ってのは<T>だから致し方なしかもしれんが、
確かにこれだとC使いにとってはC++は冗長すぎる。
> c原理主義者はそぎ落とされたロジックにしか興味ない
> c++は彼らにとっては冗長なんだろう (>>656)
は当たってる。
横だが。
ソース見ろとよく言っている奴が居るので偶には、ってやってるんだが、
どこにあるかわかりにくい上に何だかなあ、なコードなんだが。
とりあえずこれでいいのか?
https://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a01116_source.html
そしてiterator.cがどこにあるか分からないという、、、
同様の奴もいるが、あまりオススメはされてない。
https://stackoverflow.com/questions/4304783/c-vector-source-code
> 00402 iterator
> 00403 erase(iterator __position)
> 00404 {
> 00405 typename _Base::iterator __res = _Base::erase(__position.base());
> 00406 return iterator(__res, this);
> 00407 }
> 上側URL
__position.base()ってのは<T>だから致し方なしかもしれんが、
確かにこれだとC使いにとってはC++は冗長すぎる。
> c原理主義者はそぎ落とされたロジックにしか興味ない
> c++は彼らにとっては冗長なんだろう (>>656)
は当たってる。
691デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 10:56:02.77ID:DlgRUKPs0 >>689
C++は厳密な定義を始めたのはここ最近の話で昔はほぼ実装に丸投げしてた。
これは、きゃするのように仮想コンピュータを定義しないでやってきたツケだな。
ぼんやりとコンピュータっていうものの抽象化イメージだけで進んできた。
あと、C++はわからないけど、Cはとあるコンピュータに依存するものは規格に入れない決まりになってたと思う。
C++は厳密な定義を始めたのはここ最近の話で昔はほぼ実装に丸投げしてた。
これは、きゃするのように仮想コンピュータを定義しないでやってきたツケだな。
ぼんやりとコンピュータっていうものの抽象化イメージだけで進んできた。
あと、C++はわからないけど、Cはとあるコンピュータに依存するものは規格に入れない決まりになってたと思う。
692デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/24(日) 12:00:47.90ID:buA98p4W0693デフォルトの名無しさん (ワッチョイ cf8a-LdUP)
2017/12/24(日) 12:03:39.37ID:pxiUCfvD0 この手のキチガイが湧いてくるまでになったか
このスレももう終わりだな
このスレももう終わりだな
694デフォルトの名無しさん (ワッチョイ ffe7-Eeo6)
2017/12/24(日) 12:22:41.71ID:8qRcljjK0 流れ読んでないけどvec[0]が無効になるって発言したやつがいるから荒れてるの?
695デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 12:29:05.39ID:CHij32pE0 真に受けてソース読んでるしw というか読めてないしwww
実装見ても理由なんて分かるわけないだろ
質問者の使ってる実装は動いてしまう実装なんだから
実装見ても理由なんて分かるわけないだろ
質問者の使ってる実装は動いてしまう実装なんだから
696デフォルトの名無しさん (ワッチョイ 0f7f-QnTz)
2017/12/24(日) 12:30:40.54ID:CHij32pE0697デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 12:34:48.10ID:DlgRUKPs0 >>692
俺が死んだら責任とってくれるんだよね?
俺が死んだら責任とってくれるんだよね?
698デフォルトの名無しさん (スップ Sd1f-Owf0)
2017/12/24(日) 12:38:20.58ID:PCWcyI8Bd 遺書を書いて死んだら>>692は事情聴取くらいはされるかもね
699デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 12:39:11.17ID:DlgRUKPs0 軽いなぁ。
700デフォルトの名無しさん (スップ Sd1f-Owf0)
2017/12/24(日) 12:39:11.70ID:PCWcyI8Bd 「>>692に死ねと言われたので死にます」
701デフォルトの名無しさん (ワッチョイ bfeb-7LW1)
2017/12/24(日) 12:41:53.58ID:/fWBjJNa0 このスレ頭おかしいのとプログラミングスキルでイキリ散らしたいのしかいねえな
702デフォルトの名無しさん (ワッチョイ cf81-+obY)
2017/12/24(日) 12:42:40.51ID:kxsG1FMj0 令状出れば家宅捜査とPCの押収くらいはしそう
703デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 12:58:57.63ID:DlgRUKPs0 俺は叩き合いが面倒だから理由つけてしゃべってるのに、問答無用で死ねはひどいよなぁ。
完璧超人じゃないから間違いの一つや二つくらいするよ。
なぁ。完璧超人。鏡見てみたらいいと思うよ。自分ぶっ殺したくなると思うよ。
完璧超人じゃないから間違いの一つや二つくらいするよ。
なぁ。完璧超人。鏡見てみたらいいと思うよ。自分ぶっ殺したくなると思うよ。
704デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/24(日) 13:42:19.40ID:DlgRUKPs0 寝る。
705デフォルトの名無しさん (ワッチョイ 73f3-tRgI)
2017/12/24(日) 19:53:35.49ID:DS5eJCmj0 > プログラミングスキルでイキリ散らしたい
ニヤニヤ
ニヤニヤ
706デフォルトの名無しさん (ワッチョイ ff34-bbRz)
2017/12/25(月) 18:50:42.37ID:IE33Y1720 文献に書いてあることが全てだと真信してマニュアル通りに事を進めていくってまぁ受験とかならソレで良いかもしれないけどね。
物事の成り立ちを追っていくと決してその通りではないことも世の中にあるわけできちんとそういう所は汲み取っていかないとただ
の鉄砲玉みたいな一番扱いが厄介な「無能な働き者」になってしまうよ。
特にこの業界では型にはまってばかりの柔軟性のない>>692みたいな思想の違うものは徹底的に粛清しようとするワンマン堅物野郎は淘汰されるべきだと思うけどね。
物事の成り立ちを追っていくと決してその通りではないことも世の中にあるわけできちんとそういう所は汲み取っていかないとただ
の鉄砲玉みたいな一番扱いが厄介な「無能な働き者」になってしまうよ。
特にこの業界では型にはまってばかりの柔軟性のない>>692みたいな思想の違うものは徹底的に粛清しようとするワンマン堅物野郎は淘汰されるべきだと思うけどね。
707デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/25(月) 18:53:10.54ID:8OH7D8YO0708デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/25(月) 18:54:43.46ID:8OH7D8YO0 >>706
日本語でおk
日本語でおk
709デフォルトの名無しさん (ワッチョイ ffe7-89OF)
2017/12/25(月) 20:36:12.13ID:rz4NQFmP0710デフォルトの名無しさん (ワッチョイ 4371-0jja)
2017/12/25(月) 22:20:40.14ID:PDFy/wgd0 初心者ですがGC付きの言語しかやったことないのでメモリ管理について質問させてください
例えば下記のようなコードでは、hoge関数で確保したvector用のメモリはGCがないためプログラムが終了するまで解放されないということでしょうか?
少なくともpiyo関数が終了するまでは残ってないと使えないですよね?
vector<string> hoge(){
vector<string> v = {"hoge", "piyo"};
return v;
}
string piyo(){
vector<string> v2 = hoge();
string s = v2[0] + v2[1];
return s;
}
int main(){
cout << piyo();
}
例えば下記のようなコードでは、hoge関数で確保したvector用のメモリはGCがないためプログラムが終了するまで解放されないということでしょうか?
少なくともpiyo関数が終了するまでは残ってないと使えないですよね?
vector<string> hoge(){
vector<string> v = {"hoge", "piyo"};
return v;
}
string piyo(){
vector<string> v2 = hoge();
string s = v2[0] + v2[1];
return s;
}
int main(){
cout << piyo();
}
711デフォルトの名無しさん (ワッチョイ 7ff9-qy4x)
2017/12/25(月) 22:33:37.01ID:Ie/0MXd20 まずはスタックとヒープをググって調べてみるといいかも。
712デフォルトの名無しさん (ワッチョイ 4371-0jja)
2017/12/25(月) 22:47:27.89ID:PDFy/wgd0 >>711
ヒープってオブジェクトをインスタンス化したときに割り当てられるメモリ領域って認識なんですが合ってますか?
Cは関数内で宣言したローカル変数に配列を代入しても関数外に引き継げないのでまだわかるのですが、C++の考え方が掴めず混乱してます……
ヒープってオブジェクトをインスタンス化したときに割り当てられるメモリ領域って認識なんですが合ってますか?
Cは関数内で宣言したローカル変数に配列を代入しても関数外に引き継げないのでまだわかるのですが、C++の考え方が掴めず混乱してます……
713デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/25(月) 23:11:18.12ID:8OH7D8YO0 >>706
ヘタレか?
お前の喧嘩を買ってやると言っているのだから、
馬鹿パヨク韓国人なりの論理を展開してみろよ。
状況としては、2chは地域の公園のようなもので、
誰でも自由に入って楽しむことは出来るが、
飼い犬のウンコをまき散らして帰るような奴は二度と来るな、と当然思われる。
それを俺は、はっきり言ってやってるだけだ。
お前らは馬鹿すぎて理解できないようだから、直接的に言うしかない。
韓国人死ね
で、それで俺を嫌うのはお前らの自由だが、当然それでは何も解決しない。
お前らが迷惑行為を続け、他の連中に嫌われ続けるのも変わらないからだ。
何でも他人のせいにして被害者ぶるのはマジでムカつかれるから止めた方がいい。
嫌われる原因はお前ら自身にある。特に匿名掲示板ではそうだ。
ヘタレか?
お前の喧嘩を買ってやると言っているのだから、
馬鹿パヨク韓国人なりの論理を展開してみろよ。
状況としては、2chは地域の公園のようなもので、
誰でも自由に入って楽しむことは出来るが、
飼い犬のウンコをまき散らして帰るような奴は二度と来るな、と当然思われる。
それを俺は、はっきり言ってやってるだけだ。
お前らは馬鹿すぎて理解できないようだから、直接的に言うしかない。
韓国人死ね
で、それで俺を嫌うのはお前らの自由だが、当然それでは何も解決しない。
お前らが迷惑行為を続け、他の連中に嫌われ続けるのも変わらないからだ。
何でも他人のせいにして被害者ぶるのはマジでムカつかれるから止めた方がいい。
嫌われる原因はお前ら自身にある。特に匿名掲示板ではそうだ。
714片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd1f-1u/G)
2017/12/25(月) 23:19:00.09ID:OWjcriO+d 一秒一秒大切に。 Please don't waste your time.
715デフォルトの名無しさん (ワッチョイ a378-STQK)
2017/12/25(月) 23:23:13.44ID:hqAAE/zx0 vector<string> ←これはコピー
vector<string>& ←これは参照
戻り型を参照にしたらプログラムがあぼーんするけどね
vector<string>& ←これは参照
戻り型を参照にしたらプログラムがあぼーんするけどね
716デフォルトの名無しさん (ワッチョイ 4371-0jja)
2017/12/25(月) 23:31:00.53ID:PDFy/wgd0717デフォルトの名無しさん (ワッチョイ a378-STQK)
2017/12/25(月) 23:37:09.45ID:hqAAE/zx0718デフォルトの名無しさん (ワッチョイ 4371-0jja)
2017/12/25(月) 23:40:36.26ID:PDFy/wgd0719デフォルトの名無しさん (ワッチョイ cf80-fDvV)
2017/12/26(火) 01:22:10.13ID:gkP6o6Ks0 vector<string> hoge(){
vector<string> v = {"hoge", "piyo"};
return v;
}
vector<string> v2 = hoge();
関数スコープを抜けたら、関数内のオブジェクトは、自動的に消滅する。
return した瞬間に、代入演算子で、コンテナ内のデータをすべてコピーするのかも。
2重にデータを作るから、無駄
一方、参照型の言語では、primitive 以外は、すべてオブジェクトで、参照で扱う。
コンテナの参照(アドレス)をコピーするだけだから、オブジェクトは1つだけ
f(ref inout){ 〜 }
C/C++ だけ、関数の引数に、更新用の参照を渡して、
関数内部で、そのオブジェクト・コンテナを更新することを、明確にした方が良いかも
vector<string> v = {"hoge", "piyo"};
return v;
}
vector<string> v2 = hoge();
関数スコープを抜けたら、関数内のオブジェクトは、自動的に消滅する。
return した瞬間に、代入演算子で、コンテナ内のデータをすべてコピーするのかも。
2重にデータを作るから、無駄
一方、参照型の言語では、primitive 以外は、すべてオブジェクトで、参照で扱う。
コンテナの参照(アドレス)をコピーするだけだから、オブジェクトは1つだけ
f(ref inout){ 〜 }
C/C++ だけ、関数の引数に、更新用の参照を渡して、
関数内部で、そのオブジェクト・コンテナを更新することを、明確にした方が良いかも
720はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-buzn)
2017/12/26(火) 01:29:42.80ID:rFvAy7ZC0721デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/26(火) 01:41:08.77ID:OUkXE0b1a722デフォルトの名無しさん (ワッチョイ cf80-fDvV)
2017/12/26(火) 02:06:41.75ID:gkP6o6Ks0 Rust には、オブジェクトの所有権という概念がある
代入で、所有権がmove する。
オブジェクトはコピーされず、1つだけで、所有権が移動するだけ
こういう概念が、言語ルールにあるから明確
代入で、所有権がmove する。
オブジェクトはコピーされず、1つだけで、所有権が移動するだけ
こういう概念が、言語ルールにあるから明確
723はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6f6f-buzn)
2017/12/26(火) 02:14:08.86ID:rFvAy7ZC0724デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/26(火) 02:20:19.84ID:TW1LjN+M0 弱いものを踏みつけて偉い事を誇示しないと生きていけないなんてかわいそう。
それだけがやり方だと思ってるんだったら先はない。
それだけがやり方だと思ってるんだったら先はない。
725デフォルトの名無しさん (ワッチョイ 93fb-tRgI)
2017/12/26(火) 06:35:31.17ID:yJ/B7pz80726デフォルトの名無しさん (ワッチョイ 93fb-tRgI)
2017/12/26(火) 06:52:36.87ID:yJ/B7pz80 >>691
実装を限定はしていなかったというだけの話か?
だとしたら興醒めだな
確かに昔のC++は実装と提供の分離が論点なので
vectorの実装がリストでも文句をぬかすな、だったが
じゃあ何でvectorの他にlistがあるのかって話
実装を限定はしていなかったというだけの話か?
だとしたら興醒めだな
確かに昔のC++は実装と提供の分離が論点なので
vectorの実装がリストでも文句をぬかすな、だったが
じゃあ何でvectorの他にlistがあるのかって話
727デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/26(火) 07:14:27.81ID:TW1LjN+M0 昔は規格書に書いてある通り実装されてないことがよくあったって話だが、これ書けばよかったな。
だから大半のことは実装依存だった。
今頃になってりーぬすに怒られたからメモリの構成の話してるんだぜ。
仮想コンピュータの仕様でも決まってりゃ今頃3D扱っててもおかしくない。
今頃2Dをやっと扱えるようにしようとか言ってるんだから。まぁ、ないよりいいから期待はしてるが。
だから大半のことは実装依存だった。
今頃になってりーぬすに怒られたからメモリの構成の話してるんだぜ。
仮想コンピュータの仕様でも決まってりゃ今頃3D扱っててもおかしくない。
今頃2Dをやっと扱えるようにしようとか言ってるんだから。まぁ、ないよりいいから期待はしてるが。
728デフォルトの名無しさん (ワッチョイ 93fb-tRgI)
2017/12/26(火) 09:51:51.57ID:yJ/B7pz80 あほ
vectorの要素アクセス速度が添え字に比例してたら
リーナスでなくてもキレるわ
それで誰も使わなくなったライブラリがあとで改訂なんかされるかよ
# リーナス? ここC++スレだが
vectorの要素アクセス速度が添え字に比例してたら
リーナスでなくてもキレるわ
それで誰も使わなくなったライブラリがあとで改訂なんかされるかよ
# リーナス? ここC++スレだが
729デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/26(火) 10:01:52.49ID:TW1LjN+M0 メモリーオーダという話を最近始めた。
http://en.cppreference.com/w/cpp/atomic/memory_order
これだったかな?
valarrayさんが救済される日は来るのか。
ここ10年位で委員会の人が突っ込み入れるようになったけど、それ以前は忖度されてて誰も何も言わなかった。
だから、MSのコンパイラはタコだったんだよ。
http://en.cppreference.com/w/cpp/atomic/memory_order
これだったかな?
valarrayさんが救済される日は来るのか。
ここ10年位で委員会の人が突っ込み入れるようになったけど、それ以前は忖度されてて誰も何も言わなかった。
だから、MSのコンパイラはタコだったんだよ。
730デフォルトの名無しさん (ワッチョイ 93fb-tRgI)
2017/12/26(火) 10:12:55.95ID:yJ/B7pz80 ああ、最近こんな話を聞いたと自慢に来ていたのか
気の毒だがその話とvectorの実装はまるで無関係だ
悪いが俺はもう付き合ってらんねえ
気の毒だがその話とvectorの実装はまるで無関係だ
悪いが俺はもう付き合ってらんねえ
731デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/26(火) 18:46:36.46ID:qo4+F5LQ0 unordered_set<valarray>でひどい目に遭ったのは俺だけじゃないはずだ
732デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/26(火) 19:09:46.14ID:NpjbrU9/0 >>724
僕は韓国人です、ブーメランおいしい、まで読んだ
>>727
>>729
お前は何のためにここに来ているんだ?
全く脈略のない昔語りなんて、老害以外の何者でもない。
しかも内容は間違いだらけだし。
お前みたいな認知バイアス馬鹿には
> 問答無用で死ねはひどいよなぁ (703=お前)
と取れるようだから、俺がわざわざ分かりやすく、
お前が死ななければならい理由707,713を書いてやったんだ。
ちゃんと読んで死ね
> 鏡見てみたらいいと思うよ。自分ぶっ殺したくなると思うよ。 (703=お前)
むしろお前が680を書いていてまだ生きているのが不思議なんだが。
さすがゴキブリといったところか。
韓国人死ね
僕は韓国人です、ブーメランおいしい、まで読んだ
>>727
>>729
お前は何のためにここに来ているんだ?
全く脈略のない昔語りなんて、老害以外の何者でもない。
しかも内容は間違いだらけだし。
お前みたいな認知バイアス馬鹿には
> 問答無用で死ねはひどいよなぁ (703=お前)
と取れるようだから、俺がわざわざ分かりやすく、
お前が死ななければならい理由707,713を書いてやったんだ。
ちゃんと読んで死ね
> 鏡見てみたらいいと思うよ。自分ぶっ殺したくなると思うよ。 (703=お前)
むしろお前が680を書いていてまだ生きているのが不思議なんだが。
さすがゴキブリといったところか。
韓国人死ね
733片山博文MZ ◆T6xkBnTXz7B0 (ワッチョイ c3b3-PGwP)
2017/12/26(火) 20:31:37.65ID:i/UGO9LX0 >>732 時間の無駄だ。life timeを無駄にするな。
734デフォルトの名無しさん (ワッチョイ 239f-7LW1)
2017/12/26(火) 20:39:22.90ID:NpjbrU9/0 >>733
あなたがどう思おうがあなたの自由だが、俺は短期的視野で動いているわけではない。
あなたがどう思おうがあなたの自由だが、俺は短期的視野で動いているわけではない。
735デフォルトの名無しさん (ワッチョイ 0380-uc05)
2017/12/26(火) 21:31:42.92ID:WRs+G+g20 >>727
仮想マシンどころか現在存在するメジャーなインタプリタ言語の仕様にすら3Dはおろか2Dすら無いんだが。
仮想マシンどころか現在存在するメジャーなインタプリタ言語の仕様にすら3Dはおろか2Dすら無いんだが。
736デフォルトの名無しさん (ワッチョイ 6fe7-7LW1)
2017/12/26(火) 22:46:28.20ID:qo4+F5LQ0 Pythonには標準でTcl/Tkくっついてるぞ
737デフォルトの名無しさん (アウアウウー Sa67-bqMz)
2017/12/26(火) 22:51:40.52ID:OUkXE0b1a えっ?
738デフォルトの名無しさん (ブーイモ MM27-P2tI)
2017/12/26(火) 23:32:54.20ID:qDwd0bsiM >>735
仮想マシンどころかってjavaとかc#とかのことさしてるの?
仮想マシンどころかってjavaとかc#とかのことさしてるの?
739デフォルトの名無しさん (ワッチョイ 2304-615/)
2017/12/27(水) 00:16:12.80ID:OmD1y+tA0740デフォルトの名無しさん (ワッチョイ 93fb-tRgI)
2017/12/27(水) 10:05:47.36ID:hAbcZpZm0741デフォルトの名無しさん (ワッチョイ 8a98-iexB)
2017/12/30(土) 07:52:44.61ID:UOR1hNFd0 class A {
//...
};
class B : public A {
};
A *a = new B();
delete a; // だめ
B *b = new B();
delete b; // だめ
というようにA, Bのdeleteを禁止することはできますか。
ただしこの制約はAでつくりたいです。
//...
};
class B : public A {
};
A *a = new B();
delete a; // だめ
B *b = new B();
delete b; // だめ
というようにA, Bのdeleteを禁止することはできますか。
ただしこの制約はAでつくりたいです。
742デフォルトの名無しさん (ワッチョイ 9feb-RYVm)
2017/12/30(土) 09:33:10.52ID:d8FdYsMR0 それくらい自分でよく考えろ
743デフォルトの名無しさん (ワッチョイ 2aa8-eCAL)
2017/12/30(土) 09:45:33.24ID:HUtWMzBs0 バカな考えはやめとけ
充分な知識と経験があるやつがバカな考えと知りつつあえてやるなら勝手だが
具体的なやりかたも分からないレベルのやつが思いつきでやろうとしても
あちこちぐちゃぐちゃになって自滅するだけだ
充分な知識と経験があるやつがバカな考えと知りつつあえてやるなら勝手だが
具体的なやりかたも分からないレベルのやつが思いつきでやろうとしても
あちこちぐちゃぐちゃになって自滅するだけだ
744デフォルトの名無しさん (ワッチョイ cacf-Frgx)
2017/12/30(土) 11:12:47.92ID:cTkeeOUh0 A&& a{B()};
B&& b{B()};
じゃだめなん?
B&& b{B()};
じゃだめなん?
745デフォルトの名無しさん (ワッチョイ 8a98-zz6T)
2017/12/30(土) 12:45:48.79ID:UOR1hNFd0 うーん諦めそう
746デフォルトの名無しさん (ワッチョイ 86e7-RYVm)
2017/12/30(土) 13:12:04.93ID:Rl7wv9fa0 やりたいことを実現するだけならA::~A()をprivateにすればいい
数多の副作用をどうするかは自分で考えろ
数多の副作用をどうするかは自分で考えろ
747デフォルトの名無しさん (ワッチョイ 0b7e-YrVP)
2017/12/30(土) 13:54:05.13ID:wmbP4hdJ0 ベクトルの内積を取りたいのですがC++で実装する場合最も高速な方法はなんでしょうか
748デフォルトの名無しさん (ワッチョイ ca34-SFeq)
2017/12/30(土) 13:54:23.97ID:/LayJX5M0 逆にどういう条件ならdeleteしても良い条件なのか?
コレでは一向にdelete出来ないではないか
コレでは一向にdelete出来ないではないか
749デフォルトの名無しさん (ワッチョイ 0b7e-YrVP)
2017/12/30(土) 14:12:38.35ID:wmbP4hdJ0 事故解決しました
750デフォルトの名無しさん (ワッチョイ 4a12-RYVm)
2017/12/30(土) 14:50:42.66ID:tENdVusY0 罷り間違ってもdeleteできないインスタンスとなると
核開発か深海探査か宇宙船くらいしか思いつかない
核開発か深海探査か宇宙船くらいしか思いつかない
751デフォルトの名無しさん (ワッチョイ de81-owgq)
2017/12/30(土) 14:58:28.45ID:W7MN//Qp0 電源を切っても生き残るインスタンス
752デフォルトの名無しさん (ワッチョイ 4a12-RYVm)
2017/12/30(土) 15:57:20.60ID:tENdVusY0 最近の時事と照らし合わせると人工心肺の回収があったな
電源を切れないデザインの電子機器があるのかもしれない
電源を切れないデザインの電子機器があるのかもしれない
753デフォルトの名無しさん (ワッチョイ 67f2-RYVm)
2017/12/30(土) 16:04:54.13ID:JmZ4oRXS0 スタックにしか置けないとか
754デフォルトの名無しさん (スップ Sd8a-z39N)
2017/12/30(土) 19:53:03.01ID:MGnkdLjPd >>747
詳細は?
詳細は?
755デフォルトの名無しさん (ワッチョイ 8a98-iexB)
2017/12/30(土) 19:54:40.04ID:UOR1hNFd0 逆ですね
つまりヒープにしか置きたくないです。
Aから派生したクラスのメモリサイクルを全てGCで管理します。
つまりヒープにしか置きたくないです。
Aから派生したクラスのメモリサイクルを全てGCで管理します。
756デフォルトの名無しさん (ワッチョイ 67f2-RYVm)
2017/12/30(土) 19:58:30.81ID:JmZ4oRXS0 だとしたらGCからはdeleteできないと困るんでない?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- オイルマッサージ施術中20代女性にわいせつ行為か セラピストの男(30)を再逮捕 余罪複数とみて警視庁が捜査 [どどん★]
- 【おこめ】「有能だったんじゃ」おこめ券で批判殺到の鈴木農水大臣…ネットでは前任の“進次郎再評価” ★2 [ぐれ★]
- 内閣支持、微減59.9% 5割超が補正予算評価 時事通信世論調査 [どどん★]
- 【中国外務省】日本への渡航自粛を再度呼びかけ 今度は「地震発生」を理由に [ぐれ★]
- 立憲・小宮山議員、「牛乳=白い水」投稿を削除 批判殺到で「大変失礼申し上げました」 [少考さん★]
- 日本語が話せない「外国籍」の子が急増中、授業がストップ、教室から脱走も…先生にも大きな負担「日本語支援」追いつかず★3 [七波羅探題★]
- 愛国者「徴兵されるのは嫌。でも敵が侵略してきたら考えます」 [834922174]
- Vtuber「人気アニメとコラボします!」←これでVが叩かれるの謎じゃね
- 【悲報】日中戦争5割が賛成、高市キッズたち徴兵へ [834922174]
- 【悲報】日本人のTikTok収益、ガチで剥奪中wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【速報】高市内閣支持率、下落WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 頭悪そうな奴がしてくるレス
