問題タブ [stdvector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - std::vector insert() 再割り当て
std::vector コードを調べていたところ、よくわからないものが見つかりました。capacity < size() + 1 の場合、新しい要素を挿入できるようにバッファーを再割り当てする必要があります。それが何をするか(コードから抽出できた限り)は次のとおりです。
- 新しいバッファを割り当てます
- 古いバッファのプレフィックスをコピーします (0 - 挿入のインデックス)
- 新しいバッファに新しい要素を構築します
- 古いバッファのサフィックスをコピーします (インデックス - 終了)
- 古いバッファ内のすべての項目でデストラクタを呼び出す
- 古いバッファの割り当てを解除
私が見る限り、接頭辞と接尾辞のコピーは memmove で行われます。memmove はデータの純粋なバイナリ コピーではありませんか? 要素のコンストラクターを呼び出しませんよね?私が疑問に思っていたのは、メモリが移動されただけで、新しいバッファで再構築されていない場合、関数が古いバッファの要素でデストラクタを呼び出すのはなぜですか?
c++ - 即時ウィンドウでstd::vectorにインデックスを付けることができないのはなぜですか?
だから、私はベクトルを持っています
このベクトルを埋めて、次のようにアクセスできます
ただし、即時ウィンドウでは、両方
と
まったく動作しません。C++でイミディエイトウィンドウを使用するコツはありますか?私は主にC#のバックグラウンドから来ており、すべてがうまく機能しています(そして、イミディエイトウィンドウにインテリセンスがあります)。私はC++が素晴らしいとは思っていませんでしたが、int以外のことでも機能すると思いました。誰かが私が間違っていることを教えてもらえますか?ありがとう。
編集:私は明確にする必要があります、直接のウィンドウでは実際には何も機能しません、これは単なる単純化された例です
編集:私はデバッグモードです
c++ - std::vector は push_back でオブジェクトをコピーしていますか?
valgrind で多くの調査を行った結果、std::vector は push_back したいオブジェクトのコピーを作成するという結論に達しました。
それは本当に本当ですか?ベクトルは、コピーなしではオブジェクトの参照またはポインタを保持できません?!
ありがとう
c++ - ベクターへのpush_back
奇妙な問題があります。オブジェクトを次のようにプッシュしたいベクトルがあります。
ベクトルには数百の DEMData オブジェクトがあります。問題は、このコードが終了したとき、すべてのアイテムがベクターに「プッシュバック」された最後のアイテムと等しいことです。
ベクトルで他のオブジェクトがオーバーライドされるのはなぜですか?
編集:
DemData クラスは単純で、セッターとゲッターを含むデータ構造だけです。
編集:
XML ファイルを読み取り、各 xml 要素の属性に基づいて DEMData オブジェクトを構築しています。
c++ - 次の std::vector コードは有効ですか?
上記のコードは安全ですか?
c++ - この場合、std::vectorのどのコンストラクターが使用されますか
これは単純に見えますが、私は混乱しています。たとえば、int
sが100のベクトルを作成する方法は次のとおりです。
ただし、std :: vectorのドキュメントを見ると、そのコンストラクターは次の形式であることがわかります。
では、前のものはどのように機能しますか?new
デフォルトのコンストラクターから取得した初期化値を使用してコンストラクターを呼び出しますか?もしそうなら、
私は自分のアロケータを渡すところ、また働きますか?
c++ - テンプレート内の T のベクトルのベクトルクラス
このコードがコンパイルされないのはなぜですか (Cygwin)?
エラー:
std::vector<std::vector<Ttile, std::allocator<_CharT> >, std::allocator<std::vector<Ttile, std::allocator<_CharT> > > >' is not derived from type
Tilemap と入力してください
c++ - メモリプールを使用するクラスのメンバーとしてC++ベクトルを配置する
レガシーアプリケーションで使用するために、ADO/ODBCを使用してデータベースにアクセスするためのマルチスレッドDLLを作成してきました。スレッドごとに複数のデータベース接続を維持する必要があるため、接続ごとにADOオブジェクトをオブジェクトに配置し、それらの配列をカスタムthreadInfoオブジェクト内に保持することを検討しました。明らかに、ここではベクトルの方が適しています。外出先でオブジェクトを削除/再配置する必要があります。ベクトルを使用すると、それが単純化されます。問題は、ヒープの競合などを回避するためにスレッドごとにヒープを割り当て、そこからすべてのメモリを割り当てることです。
だから私の質問は:どうすればベクトルをスレッド固有のヒープから割り当てることができますか?(または、ラッパークラスと同じヒープからメモリを割り当てることを内部的に知っているでしょうか?可能性は低いですが、私はC ++の人ではありません)少しグーグルで調べたところ、アロケータなどを作成する必要があるようです-これは私が望まない仕事のように見えます。他に方法はありますか?ベクトルは配置を使用していると聞きました-内部のすべてのものに新しいので、オーバーロード演算子newをそれに組み込むことができますか?
私は主にCプログラマーであるため(それでも-比較的)、C++の内部に関する私の知識は役に立ちません。どこかで初歩的なものが欠けている可能性が非常に高いです。簡単なことは何も思い浮かびません-私はただ配列のことをするかもしれませんが、うまくいけばそれは実現しません。
私はMS-VC++6.0を使用しています(笑うのは失礼です!:-P)。
どんな/すべての助けも大歓迎です。
c++ - std::vector 内のオブジェクトを指す を返す
vector の要素への参照を返すことについて、非常に基本的な質問があります。
vec
class のインスタンスを格納する vector がありますFoo
。この vector から要素にアクセスしたい。(ベクトル インデックスを使用したくない) . ここでメソッドをどのようにコーディングすればよいgetFoo
ですか?