C++相談室 part151

■ このスレッドは過去ログ倉庫に格納されています
2020/05/14(木) 11:53:25.59ID:ZPCfyTux
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part150
https://mevius.5ch.net/test/read.cgi/tech/1584975873/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1556142878/

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

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)

テンプレここまで
2020/05/14(木) 17:51:54.74ID:nTyJBG5I
>>8
extern "C" {}
はブレース内をCリンケージで処理するつって話
extern "C" int a;
はCリンケージのextern文
2020/05/14(木) 18:15:11.62ID:7nN34odP
>>14
stackoverflow以外に、公式サイトでそれが書かれている場所を教えていただければ幸いです。
2020/05/14(木) 18:18:32.65ID:jF4/VTtK
cppreferenceは仕様書じゃないから書いてなくても不思議じゃないと思うけど。
仕様書見たら?ドラフト版はネットに転がってる
2020/05/14(木) 18:25:58.94ID:7nN34odP
>>16
その公式アドレスを教えていただければ幸いです。
2020/05/14(木) 18:27:40.05ID:nTyJBG5I
>>15
cppreference.comに書かれてるぞ
2020/05/14(木) 18:28:39.75ID:nTyJBG5I
externの説明のnotesのところにな
2020/05/14(木) 18:32:35.87ID:jF4/VTtK
>>17
ggrks
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf

あとcppreferenceはある意味ファンサイトみたいなものなので、何らかの標準化組織の公式サイトというわけじゃないよ
2020/05/14(木) 18:42:47.93ID:nTyJBG5I
つーか、cppreferenceに書いてあるのに見落としてよそのサイト教えろとか馬鹿丸出しで笑える
22デフォルトの名無しさん
垢版 |
2020/05/14(木) 18:45:51.63ID:QxbT6fEj
バカにバカというのはバカ差別で違法だからね。
2020/05/14(木) 20:34:45.27ID:Qhhsb9+b
情報量ゼロのゴミレスでドヤ顔する自覚なきクズ大杉
20はggrksと言いながらちゃんとリンク貼ってる
24デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:40:53.93ID:xR/PZA9p
>>22
https://www.youtube.com/watch?v=M-5c6l4QfC8
25デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:46:17.52ID:QxbT6fEj
>>24
「私たちは抗議活動のための支援団体、人道支援団体ではない」
反日団体だから慰安婦なんか知ったことじゃないって事だろ?
筋通ってると思うが。
26デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:48:02.32ID:QxbT6fEj
そういえば、チョンにチョンというのはチョン差別で違法だけど、日本人に日本人というのは別に問題ないね。
フランス人にフランス人というのも問題ないし、中国人に中国人というのも問題ない。
何が違うんだろ。
27デフォルトの名無しさん
垢版 |
2020/05/14(木) 20:51:04.91ID:QxbT6fEj
チョンというのがダメなのかと思ったけど。
朝鮮人に朝鮮人というのも朝鮮人差別だから違法だよね。
ますますわからん。
2020/05/15(金) 18:22:21.33ID:hNzctM0s
以下の混乱を、どう解決すべきか分かる人いますか?

・無名の共用体: 問題は特に有りません。
・無名の構造体: 入れ子の構造体(nested class)の「型定義」と区別が付かない気がします。
以下はその説明です :

class CPerson {   // (1)
  struct _TAaa {   // (2)
    ・・・
  };   // (3)
};

と書いた場合、(3) の部分にメンバ名が書かれていません。

しかし、これでは以下のどちらかなのか区別できない気がするのです。

a. CPerson の中に「無名ではあるが実態のあるメンバ」として「メンバ変数」を定義するつもり。

b. 単に、CPerson の class scope の中に _TAaa というタグ名を持つ構造体を「型定義」するつもり。


MSは、a の方針で、この形式 (2)〜(3) を、「anonymous structure」と定義しているらしいです。
しかし、C++ には、b の解釈の「nested class」という言葉も存在しています。
2020/05/15(金) 18:32:30.47ID:OzObLB6i
>>28
自分でコンパイルしてどうなるか試したんだよな?
2020/05/15(金) 18:39:41.33ID:7pqJGfJd
2に名前つけている時点で無名じゃない
2020/05/15(金) 18:44:03.32ID:hNzctM0s
>>30
なるほど。
32デフォルトの名無しさん
垢版 |
2020/05/16(土) 16:37:49.22ID:nLCzlpLv
std::bitset を std::unordered_map か std::map のキーとして使用したいのですが、
どうすればよろしいのでしょうか?
2020/05/16(土) 16:40:58.20ID:hM/FmoW0
>>32 やってみて、何か問題あったの?
2020/05/16(土) 16:46:28.51ID:tFvEvqcA
std::unordered_map<std::bitset<42>, int> um;
um[std::bitset<42>("0011")] = 9999;
std::cout << um[std::bitset<42>("0011")] ;

普通に動いたぞ
何に困ってるんだ?
35デフォルトの名無しさん
垢版 |
2020/05/16(土) 16:50:35.98ID:nLCzlpLv
>>33
>>34

下のコードで書いてもエラーが出てしまってどうすればよいかがわからないんです。

#include <map>
#include <unordered_map>
#include <bitset>

int main()
{
std::map<std::bitset<100>, int> a;
std::bitset<100> n;
n.set( 1 );
a.insert( std::make_pair( n, 100 ) ); // ここでエラーが出てしまいます。

return 0;
}
2020/05/16(土) 16:59:00.14ID:hM/FmoW0
>>35 エラーメッセージも貼って、エラーメッセージのわからないところも書いてくれるといいな。
37デフォルトの名無しさん
垢版 |
2020/05/16(土) 17:07:47.33ID:nLCzlpLv
>>36

error C2676: 二項演算子 '<': 'const _Ty' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照)
with
[
_Ty=std::bitset<100>
]
message : クラス テンプレート メンバー関数 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のコンパイル中
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の関数 テンプレート インスタンス化 'bool std::less<std::bitset<100>>::operator ()(const _Ty &,const _Ty &) const' のリファレンスを確認してください
with
[
_Ty=std::bitset<100>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::less<std::bitset<100>>' のリファレンスを確認してください
message : コンパイルされている変数テンプレート 'const bool is_empty_v<std::less<std::bitset<100> > >' のリファレンスをご参照ください
message : コンパイル対象の クラス テンプレート インスタンス化 'std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>' のリファレンスを確認してください
with
[
_Kty=std::bitset<100>,
_Ty=int,
_Pr=std::less<std::bitset<100>>,
_Alloc=std::allocator<std::pair<const std::bitset<100>,int>>
]
message : コンパイル対象の クラス テンプレート インスタンス化 'std::map<std::bitset<100>,int,std::less<std::bitset<100>>,std::allocator<std::pair<const std::bitset<100>,int>>>' のリファレンスを確認してください
2020/05/16(土) 17:07:54.21ID:tFvEvqcA
わかった、std::mapだとダメなんだな
bitsetがoperator<持ってないからだ
これ定義すればmapでも通ると思うよ

template<>
struct std::less<std::bitset<100>>
{
bool operator()(const std::bitset<100>& lhs, const std::bitset<100>& rhs) const{ return lhs.to_ulong() < rhs.to_ulong();}
};
39デフォルトの名無しさん
垢版 |
2020/05/16(土) 17:08:13.11ID:nLCzlpLv
といったメッセージが出ております。
40デフォルトの名無しさん
垢版 |
2020/05/16(土) 17:09:26.66ID:is04b0b3
>>35
a.insert( std::make_pair< FOO , BAR >( n, 100 ) );
2020/05/16(土) 17:09:55.37ID:tFvEvqcA
まあどうしてもmapにしたい理由がなけりゃおとなしくunordered_mapにした方がいいと思うけど
stdのテンプレートをstdのクラスで特殊化するのは本来は反則だし、unordered_mapの方がだいたい効率いいし
42デフォルトの名無しさん
垢版 |
2020/05/16(土) 17:16:42.14ID:uXmamJPc
普通に考えたらこれだろ。
std::make_pair( n, 100 )
43デフォルトの名無しさん
垢版 |
2020/05/16(土) 17:36:40.03ID:nLCzlpLv
皆さん。情報ありがとうございます。

>>38
試してみた所ビットを33個立てるとstd::overflow が出てしまうようです。
おそらく関数の仕様的な問題だと思うのですが……

>>40
a.insert( std::make_pair<std::bitset<MAX>, int>( n, 100 ) );
とやってみた所エラーが出てしまいました。
この辺の指定はコンパイラが勝手に行ってくれると思っていたのですが、
指定しなければならないのでしょうか?

>>41
std::unordered_map を利用するとうまくいきました。
ありがとうございます。

>>42
すみません。
>>40と同じ理由なのでしょうか?
2020/05/16(土) 17:50:14.76ID:qkv5Lv3o
bitset の値同士で < での比較ができないから map でエラーってことか。
unordered_map なら == で比較できれば使える、と。
2020/05/16(土) 18:00:40.13ID:tFvEvqcA
ああ>>38だとulongにして比較してるからオーバーフローしちゃうな
真面目にビット比較するように関数書けば通ると思う
遅そうだしなおさらunordered_mapの方が良くなるけど
46デフォルトの名無しさん
垢版 |
2020/05/17(日) 14:06:29.05ID:7W3ntFmq
ラムダ式にテンプレートの型指定ってできないんですかね?

auto f = []<class T>(T) {};
auto f2 = []<class T>() {};
f(1);
f2<int>();

fは引数にその型のパラメータがあるので大丈夫なんですけど、
f2だとコンパイルが通らないです...
2020/05/17(日) 14:12:23.12ID:ykqeUojC
ダミーの引数渡して
decltypeするとかすればいいんじゃね
2020/05/17(日) 14:33:24.46ID:AX8hrxuQ
>>46
呼び出してるのはあくまでオーバーロードされた関数呼び出し演算子なので、こうする
f2.operator()<int>();
https://wandbox.org/permlink/uVSptZMZErNrL5p3
2020/05/17(日) 14:41:04.25ID:7W3ntFmq
>>48
なるほど!ありがとうございます!!
50デフォルトの名無しさん
垢版 |
2020/05/18(月) 09:15:27.74ID:XEI7YtdQ
なるほど
戻り値で判断するのも知りたい
2020/05/18(月) 10:30:31.10ID:VVfIWrZc
>>46
auto仮引数ではあかんの?

auto f = [](auto arg) { cout << typeid(arg).name() << endl; };
f(1); //int
f(1.5); //double
52デフォルトの名無しさん
垢版 |
2020/05/18(月) 19:43:09.64ID:NOr8CY4q
以下のコードを実行すると 'あ' がアルファベットと判定されてしまうのですが、なぜかわかりますか?
Visual C++ 2019でもg++ 7.5.0でも結果は一緒でした(値は違いますが)。

std::locale loc("");
std::locale::global(loc);
std::wcout << std::isalpha(L'あ') << std::endl;
std::wcout << iswalpha(L'あ') << std::endl;
2020/05/18(月) 20:28:29.14ID:SqFV2JvV
あはアルファベットだからだろう
2020/05/18(月) 20:49:09.32ID:vxC60pVH
というより、その判定結果だからこそあはアルファベットなんだよ
isalphaがtrueを返すものを現在のロケールにおけるアルファベットと呼ぶと言う方が正しいか
2020/05/18(月) 20:53:28.77ID:ah40zw28
いや、isalphaがtrueになる文字は各localeで決まっている

isalphaはそれを垂れ流しているだけ
56デフォルトの名無しさん
垢版 |
2020/05/18(月) 21:32:06.39ID:cgM2dsGJ
is_ascii_alpha()のほうが良く使う。
57デフォルトの名無しさん
垢版 |
2020/05/18(月) 22:16:41.22ID:NOr8CY4q
ありがとうございます
普段は「日本語のアルファベット」とはあまり使わないけれど、
設定されている言語で表現するための文字のことをアルファベットと呼んでいると理解しておきます。
2020/05/19(火) 03:42:01.59ID:dHzzm0xI
そもそも英語では普通にひらがなとカタカナを指して"Japanese alphabet"と呼ぶ
59デフォルトの名無しさん
垢版 |
2020/05/19(火) 10:55:08.90ID:h69Ba80R
アルファベットはアラビア語が語源?
60デフォルトの名無しさん
垢版 |
2020/05/19(火) 10:56:23.71ID:h69Ba80R
あと正確に言うなら日本語のアルファベットは
いろは
2020/05/19(火) 12:21:31.91ID:kOq4o5Tk
アルファベット=表音文字と言いたいの?
2020/05/19(火) 13:16:28.27ID:kUNy0nAn
stlを考えた人は馬鹿だからな。
2020/05/19(火) 13:40:15.28ID:kUNy0nAn
isalpha()が2バイト文字環境でいままで使われてきた経緯も知らずに勝手に仕様を変えてしまう馬鹿な人々。
min,maxも伝統的なマクロの存在を知らずに衝突させてしまう馬鹿。
さらに馬鹿なのはSTL作者達なのにコンパイラ処理系作者のせいにしてしまう愚かな烏合の衆たち。
2020/05/19(火) 13:44:38.41ID:JQlWutmQ
isalphaは昔のcでもlocale依存だろ
65デフォルトの名無しさん
垢版 |
2020/05/19(火) 14:25:44.49ID:O4jzhFRD
STLは、なぜあの時代に、ここまで抽象化できたのか?彼らは宇宙から来たのではないか?などと考えてしまうが。
66デフォルトの名無しさん
垢版 |
2020/05/19(火) 14:27:12.72ID:O4jzhFRD
Windows.hのmin、maxは困りものだよな。
2020/05/19(火) 14:51:53.51ID:oq2DQSv9
マクロでminmax書いているほうがどう考えてもバカだよな
2020/05/19(火) 14:54:10.83ID:oq2DQSv9
win32の設計とかあーバカコードだなコレってのがちらほら
2020/05/19(火) 16:31:48.66ID:kOq4o5Tk
>>67
御意
2020/05/19(火) 17:47:23.01ID:HCP/tGTo
人類がBOOST_PREVENT_MACRO_SUBSTITUTIONから解放される日は遠い
2020/05/19(火) 18:01:48.72ID:0UAmioLe
STLの方が馬鹿。
今までのものを知らないで独自のものを書くのは簡単。
勉強もせずに独自の日記を書くようなことだから。
72デフォルトの名無しさん
垢版 |
2020/05/19(火) 18:23:54.92ID:8HY/3oGP
なぜ会社を100社以上バックレたのか?働きたくない男の末路!
https://www.youtube.com/watch?v=C73If3B6MXc
【遅刻早退ドタキャン癖】の絶望的な解説。社会人失格の烙印。
https://www.youtube.com/watch?v=bGarZKcC08s
【悲報】あがり症は完治しない!緊張対策よりも開き直り!
https://www.youtube.com/watch?v=-jMUFZc9vRA
結婚式への参加は『社会の底辺』には地獄!非モテ手当を寄こせ!
https://www.youtube.com/watch?v=oKFrGkpsP8Y
親戚の『葬式』ドタキャンで激怒された!冠婚葬祭パワハラが酷い!
https://www.youtube.com/watch?v=0L-EAndCodE
リボ払い借金500万円の一日!敗者復活ルーティーン
https://www.youtube.com/watch?v=shJMgp6EuW8
2020/05/19(火) 18:33:01.90ID:SLJ7GP9K
>>59
ちがいます、フェニキア文字由来ですよ
アラビア語はセム語族の中でも後発後進国
2020/05/19(火) 19:02:02.51ID:VP2fOBMJ
>>72
スレチ グロ
2020/05/20(水) 06:07:41.13ID:8m9cjgNh
関数(始点,終点)に馴染めないバカのあぶり出しだったな
関数(始点,個数)に固執してたやつらがSTLで吠え面かかされたw
2020/05/20(水) 14:27:55.42ID:9xAqQrOe
https://ideone.com/vJRbP1

ミラーラビン素数判定法を聞いて作ってるんだけど、決定性に確定させるにはここからどうしたらいいですか?
2020/05/20(水) 14:30:18.93ID:9xAqQrOe
https://ideone.com/Gq2X2N
無しだとちゃんと出るっぽいです。ということを見せておきます。
2020/05/21(木) 09:22:26.84ID:r7XP4kDE
>>65
ソ連で生魚にあたって、入院中に病院の天井みてたら思いついたらしいぜ
2020/05/21(木) 11:21:03.35ID:K4ggzWEW
寄生虫より有毒魚かもな
フグみたいな命取りなやつじゃなくバラムツくらいなら腹壊す程度で済む
2020/05/21(木) 20:23:36.81ID:U7f5mioC
>>75がどれに対するレスなのか分からんが
みんな単にスルーしてんだろうなこれは
2020/05/22(金) 07:52:07.46ID:QdrkGYuD
バカって素直だな
ちゃんと返事しやがるw
82デフォルトの名無しさん
垢版 |
2020/05/22(金) 13:00:00.65ID:c/ouk/Jn
dtmみたいな楽器を作る場合、音は何らかのライブラリを使うんでしょうか?1から作れるんですか?
2020/05/22(金) 14:03:10.66ID:lsrfRepl
は?
オリジナルは普通にサンプルしたものだろ
2020/05/22(金) 14:03:38.08ID:lsrfRepl
つまり現実の楽器の音
85デフォルトの名無しさん
垢版 |
2020/05/22(金) 14:08:19.81ID:c/ouk/Jn
>>83
シンセとかもサンプルしてるんですか?
2020/05/22(金) 14:39:41.09ID:TUWJypw2
>>85
いかにもデジタル的な音は昔はFM音源だった。
あと、ランダムノイズ的なものも利用。
今は、楽器を物理シミュレーションしている場合がある。
87デフォルトの名無しさん
垢版 |
2020/05/22(金) 14:47:32.08ID:Vl9NL0Mz
オートチューン使うと自分の声が楽器みたいになります。
2020/05/22(金) 17:31:59.13ID:Sp8oG6pc
あるクラスのvectorに対し、個々のクラスのメンバのvectorを返すのってラムダ式でサクッと書けると思うのですが、どうやればいいですか?

struct A { int i; };
vector<A> v(10);
auto v_i = 〜ラムダ式〜 // サイズ10のvector<int>が返る

こんな感じです
2020/05/22(金) 17:34:51.45ID:O4ltSfT0
なにいってるのかワカランゴ
2020/05/22(金) 17:40:03.05ID:Wrt3y1wd
[&]{
std::vector<int> ret(v.size());
std::transform(v.begin(),v.end(),ret.begin(),[](A d){return d.i;});
return ret;
}
2020/05/22(金) 17:42:50.71ID:Wrt3y1wd
[](A){...}
のところは&A::iでもいいかな
92デフォルトの名無しさん
垢版 |
2020/05/22(金) 17:44:13.14ID:Czx4JK5B
>>88
https://ideone.com/0s5iRL
2020/05/22(金) 17:59:27.93ID:Sp8oG6pc
なるほど、std::transformを使うのですね
Pythonみたいにサクッとできたらよかったのですが、ちょっとイメージと違いました
ラムダ式に変な期待、というか勘違いしてました

素直にrange for文で個々にemplace_backするほうが短いし分かりやすいので、今回はそうします
ありがとうございました
2020/05/22(金) 18:03:14.33ID:Wrt3y1wd
pythonだと[d.i for d in v]って所か?
lambdaじゃないけど
2020/05/22(金) 18:08:11.35ID:UA0IlUzi
内包表記だな
2020/05/22(金) 19:08:51.35ID:TUWJypw2
>>90
そういうSTLのbegin,end表記見てると pure Cのqsortの書き方を思い出してしまう。
危険なので毎回良く仕様書を確認してから慎重に使わないといけないという。
2020/05/23(土) 00:02:55.12ID:jzsRlJtI
range を使えば楽だろうと思ったんだけど view からコンテナに変換する関数は C++20 には入らなかったの?
Range-v3 にある to みたいなやつ。
https://ericniebler.github.io/range-v3/group__group-range.html#ga555b843264809e3765210c42a66d3c3b
2020/05/23(土) 20:12:53.91ID:Ze0+o2k4
>>87
diva danceみたいに?
2020/05/27(水) 17:21:37.04ID:UmTuuMOr
gdbのプロンプトでsqrtとかabsみたいな数学の関数使えないんだけど使えるようにする方法ある?
2020/05/27(水) 17:25:22.27ID:CVgHI0+a
さぁ
2020/05/27(水) 17:52:37.65ID:y56ZMEX8
毎回生成したくない大きめな作業用配列とかって結局どこに持っとくのが良いの?

メンバ変数として?
グローバル変数として?
2020/05/27(水) 18:36:53.07ID:IG528ewY
そんなことで悩むレベルなら毎回生成しろ
たぶんそんなことでは全く遅くはならん
2020/05/27(水) 19:02:42.55ID:8V/LyVfK
なるべく使う奴にしか見えないスコープに閉じ込めるんだよ
bool1個だろうと10GBの配列だろうと一緒
基本を守るだけだ
2020/05/27(水) 19:50:08.92ID:9+VJvnQZ
>>99
$ gdb some_program
(gdb) break main
(gdb) run
(gdb) print ((double(*)(double))sqrt)(2.0)
って感じで使えないかな。
たぶん some_program は何らか libm の関数を取り込んでないとダメだけど。
2020/05/27(水) 20:25:14.60ID:UmTuuMOr
>>104
できました
そのキャストが必須な理由はまだ理解してませんが
2020/05/27(水) 20:35:36.86ID:8D/pm3yR
作業用の領域の扱いってたしかにいつも悩むんだが、
*) ループや関数の内側で毎回コンテナ (vector, set, queue, etc...) を宣言し、初期化し、使う

*) ループや関数の外側にコンテナを宣言しておき、ループや関数の内側で初期化し、使う
だと当然後者の方が低コストで、可読性を大きく損なわない限り後者の方が良いのだよな?

初期化の計算量のオーダーは両者とも同じだが、可変長コンテナのメモリアロケーションの回数を少なくするのが重要だと思って良いのだよな?
2020/05/27(水) 20:37:48.66ID:8D/pm3yR
もう一個質問

STLコンテナの初期化は空とのswapでやったりすると思うが、この場合コンテナが置かれたメモリの場所は変わらんよな?
つまり、余計なメモリアロケーションは起こらんよな?
2020/05/27(水) 20:45:00.53ID:fWbzFAkP
なんかイラっときた
2020/05/27(水) 20:50:33.85ID:CVgHI0+a
なぜ同意を求める?
部下に相槌を打つようにいつも説得しているのか?
お願いします
教えてください
も言えんのか
2020/05/27(水) 21:47:27.96ID:HrRUxTGO
行単位でファイルを読み込んだあと、パースするような処理で巨大なテキストファイルを扱う場合だと、顕著に後者が速くなる

まあ一度プロファイラで確認してみればいいよ
2020/05/27(水) 23:11:34.31ID:OEK6SyHu
>>106
場合による。
「可読性を大きく損なわない限り後者の方が良い」という理屈なら
「速度を大きく損なわない限り前者の方が良い」とも言えてしまうよ。
どちらが大事かなんて場合によるとしか言いようがない。

>>107
C++ の標準ライブラリにあるコンテナに関して言えば swap でアロケーションは発生しない。
アロケーションは発生しないけど std::array はちょっと特殊で要素の swap が発生するので
線形時間がかかることになっていることには注意。
2020/05/27(水) 23:13:55.80ID:CVgHI0+a
要素のswapってなんだ?
再配置だろ
2020/05/27(水) 23:26:27.55ID:OEK6SyHu
>>112
再配置と言えば再配置ではあるけど、 >>107 の質問について
「コンテナが置かれたメモリの場所は変わらんよな?」に対しては「はい。 コンテナのメモリの場所は変わりません」だし
「余計なメモリアロケーションは起こらんよな?」に対しては「はい。 メモリアロケーションは発生しません」なので
正確に注意点を表現するなら「(格納場所の swap ではなく) 要素単位の swap ですよ」という表現になるでしょ。
2020/05/27(水) 23:50:44.02ID:HrRUxTGO
単にgetlineした文字列を
vectorに詰める場合、
getlineしたバッファをmove push_backしたり、shrink_to_fitしてmove
push_backするより、何もせずpush_backでコピーを詰め込んでバッファを使い回しってのが一番速くてメモリ効率もよく、コードもスッキリする
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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