問題タブ [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.

0 投票する
2 に答える
648 参照

c++ - カスタム ベクター STL コンテナーでの clear() の問題

Accelerated C++の例に従って、カスタム STL コンテナーを作成しましstd::vectorVecVec::clear()成功に勇気づけられて、ベクトルをクリアする a を追加しようとするまで、すべてがうまくいきました。

これが最新のクラス定義です(この質問に関連する部分のみ):

私はこれを使用してテストします

次の出力が得られます。

何らかの理由clear()で、limitポインターを上書きします。変更すらしていないのに、どうしてこれができるのでしょうか。コードはとてもシンプルに見えますが、何が欠けているのかわかりません。

ありがとう!

0 投票する
3 に答える
320 参照

visual-studio-2010 - カスタムOSのSTL-std::listは機能しますが、std::vectorは機能しません

VisualStudio2010でgrub-bootableC++カーネルを試してみました。

newとdeleteが書き込まれ、動的に割り当てられた配列などが機能するようになりました。たとえば、STLリストを使用できます。memcpyルーチンを作成した後、それらをソートすることもできます。問題は、std::vectorタイプを使用する場合です。ベクトルを作成するだけで、カーネルがララランドに送られます。

明らかに、ある種の関数の実装が欠けていますが、STLを調べてそれを探し、手ぶらで出てきました。push_backで失敗します:

そしてエーテルに消えます。

私が欠けているものについて何か推測はありますか?

はい、それはintのベクトルです。混乱させて申し訳ありません。それだけでなく、失敗するコンストラクターではなく、push_backの呼び出しです。

0 投票する
4 に答える
409 参照

c++ - ベクトルへの参照を渡すのにまだ問題があります

この投稿で同様の質問をし、回答から学びましたが、

私はまだそれを機能させることができません。

アスタリスクのある行は機能しません。「tree_dict = 新しい辞書」

エラーは次のとおりです。

「演算子なし」= は、これらのオペランドに一致します。

私がやろうとしているのは、新しいツリーが存在するたびにノード*の新しいベクトルを作成することです

インスタンス化されます。ノードに新しいベクトル (tree_dict) への参照を渡します

Node の新しいインスタンスごとにその参照を渡すコンストラクター

(Node* left および Node* right) 前に自分自身へのポインターを push_back できます

参照を子ノードに渡します。

したがって、各 Tree.tree_dict は、各 Node* へのポインターを含む単一のベクトルです。

木。助けが必要です。

0 投票する
5 に答える
2241 参照

c++ - std::ベクトルの最適化

std::vector から多くの値を読み取るループがプログラムのボトルネックであると仮定すると、変更することが提案されています

[] 演算子をバイパスすることで、実際にパフォーマンスが向上しますか?

0 投票する
3 に答える
2454 参照

c++ - インプレース ユニオン ソートされたベクトル

ソートされたベクトルと別のソートされたベクトルのインプレース結合を行うための効率的な方法が欲しいです。インプレースとは、一時的であっても、アルゴリズムがユニオンを格納するためのまったく新しいベクトルやその他のストレージを作成してはならないことを意味します。代わりに、最初のベクトルは、新しい要素の数だけ単純に増加する必要があります。

何かのようなもの:

その後、AにはAユニオンB のすべての要素が含まれ、並べ替えられます。

std::set_unioninは、 A<algorithm>である宛先を上書きするため、機能しません。

また、これは 2 つのベクトルを 1 回通過するだけで実行できますか?

編集: AとB の両方にある要素は、 Aに 1 回だけ出現する必要があります。

0 投票する
4 に答える
17689 参照

c++ - 「最後の要素へのポインタ」、std::vector のよりきれいな構文?

C ++ベクトルの最後の要素への通常のポインター(イテレーターではない)を取得するためのよりきれいな構文があるかどうか疑問に思っています

しかし、これらは両方ともあまり見栄えがよくありません!

0 投票する
6 に答える
112441 参照

c++ - 静的ベクトルの初期化

以下よりも静的ベクトルを初期化する「より良い」方法があるのだろうか?

これはサンプルコードです:)

push_back() の値は個別に宣言されます。配列などではありません。

編集:それが不可能な場合は、それも教えてください:)

0 投票する
4 に答える
27761 参照

python - boost :: python:Pythonリストからstd :: vector

最後に、[]演算子を使用してPythonでstd::vectorを使用できるようになりました。秘訣は、内部ベクトルのものを処理するBoostC++ラッパーにコンテナーを単純に提供することです。

もう1つの課題は、Pythonリストをstd ::vectorに変換する方法です。std ::vectorをパラメーターとして期待するc++クラスを追加しようとし、対応するラッパーコードを追加しました。

しかし、そうすると、次のBoost.Python.ArgumentErrorが発生します。

C ++関数内でPythonリストにアクセスする方法を教えてもらえますか?

ありがとう、ダニエル

0 投票する
4 に答える
2000 参照

c# - C#からパラメーターとしてstd :: vectorを使用して、アンマネージC ++関数を呼び出す方法は?

パフォーマンス上の理由から、C#フロントエンドとC++バックエンドがあります。次に、たとえば次のようなC++関数を呼び出します。

私が欲しいのは、次のようなC#ラッパー関数です。

Point[]のようなフラット配列をアンマネージC++dllに渡すことはできますが、問題は、関数が返す要素の数がわからないため、割り当てるメモリの量がわからないことです...

メモリリークの問題を起こさずにこれを処理するエレガントな方法はありますか?

ご協力いただきありがとうございます!

ベンジャミン

0 投票する
10 に答える
22450 参照

c++ - C++ のループでの vector::size() のパフォーマンスの問題

次のコードでは:

メンバー関数はsize()ループの反復ごとに呼び出されますか、それとも 1 回だけ呼び出されますか?