問題タブ [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 に答える
3840 参照

c++ - C ++で集合のベクトルを行う方法は?

セットの単純な配列を実行できます: set < char > * words = new set < char > [10] セットのベクトルを実行するにはどうすればよいですか?これにより、コンパイラエラーが発生します vector < set< char >> v。回答ありがとうございます!

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

c++ - ベクトルを手動で並べ替えるC++で

私は現在、C++でベクターがどのように機能するかを調べています。私はそれらの機能をかなりよく読んで理解しました。

10,000intのベクトルオブジェクトを並べ替えるさまざまな方法を検討しています。std::sortメソッドとシェルソートを使用しました。

ベクトルのシェルソートは、単純なCスタイルの配列のソートよりも遅いことに気づきました。これは、「コンテナの中央での要素の高速挿入または削除がサポートされていないため」(http://www.cppreference.com/wiki/container/vector/start)であることがわかりました。したがって、ランダムアクセスが多いシェルソートは明らかに非常に遅くなります。

10,000 intのベクトルに対して、より良い手動ソート方法は何でしょうか?これはあなたが見る学習演習のためです!:)

0 投票する
1 に答える
773 参照

c++ - 構成による数学的ベクトルクラス

私は、数学的なstd::vector操作を使って、同じように動作するクラスを書き始めました。主に、ベクトルのノルムや、要素ごとに物事を加算、減算する重要な数学演算子(+、-など)のオーバーロードなどがあります。

クラスは以下に掲載されています。私はboost::operatorsすべての数学演算子を作成するために使用しましたが、それらはすべて問題なく機能します。イテレータを実装するときにいくつかの問題が発生しました。イテレータをネストされたクラスとして記述し、イテレータのboost::iteratorほとんど/すべての機能を取得するために使用しようとしましたstd::vector

これは私が問題に遭遇した場所です。コードは約2マイル相当のテンプレート関連のエラー出力でコンパイルされません。興味があれば投稿できますが、典型的な冗長ブーストテンプレートエラーです。

私の質問は2つあります。

まず、構成が最良の設計選択ですか?プライベート継承またはデコレータパターンの方がうまくいくでしょうか?あるいは、誰かが図書館でのこのアイデアの実装を知っていますか?

第二に、私はイテレータで何が間違っているのですか?自分のboost::iterator実装に根本的な何かが欠けているように感じ、デザインを変更するのではなく、それを修正したいと思います。

些細なことでも重要でもないため、ほとんどのメソッドに実装を含めていません。

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

c++ - ベクトルを使用する動的に割り当てられたwchar配列の代わりに

先日、動的に割り当てられたwchar配列の代わりにvectorを使用していないことを(stackoverflowで!)言われました。

そこで、メモリリークの可能性を防ぐのは良い考えのように思われるので、この文字列操作の方法を使用することを検討しました。

私が思いついたのは、ベクトルテンプレートクラスを誤って使用していない限り、ベクトルの使用は、ヒープに割り当てられた配列と古き良きmemcpyを使用するよりもはるかに柔軟性が低いということでした。

sOutputベクトルには、すべての文字列の連結が含まれていると思います。代わりに、最初に挿入された文字列のみが含まれます。

また、初期化子リストでベクトルの値を割り当てることはできませんが、c++0xの機能である可能性があると聞いたのを覚えていると思います。これは正しいですか?そして、次のことを行う方法はありますか?

最後に、上記の単純なルーチンで達成したいことについては、動的に割り当てられた配列を使用した方がよいでしょうか、それとも、一見柔軟性のないwcharのベクトルを使用したままにする必要がありますか?

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

c++ - ベクトルでアイテムをプッシュできず、C ++でリストできませんか?

これは基本的なマージソートプログラムです。

問題は、アイテムを「ベクターマージ」にプッシュしようとしても、何も起こらないことです。(コードの下のgdbデータを参照してください)

// =================================== GDB DATA =========== ========================

誰か私に手を貸してくれませんか?

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

c++ - std::vector アサーションが失敗しました (ベクトル反復子に互換性がありません)

私はこの構造体を持っています:

次に、MxMInstanceData のベクトルを作成します。

電話instInFrustumData.clear()すると、次のエラーが表示されます。

アサーションが失敗しました (ベクトル反復子に互換性がありません)

ベクター作成コード:

ベクトル更新コード:

何がこれを実現させることができますか?

そして、クラスのデストラクタで clear() も呼び出します

0 投票する
7 に答える
842 参照

c++ - このモデルにはミューテックスが必要ですか?

2 つのクライアントが通信できるようにするサーバーを使用してプログラムを設計しています。コマンドを実行するクライアントと、他のクライアントにコマンドを実行させる別のクライアントがあります。

これを機能させるために、2 つのスレッドがあります。1 つは制御対象クライアント用、もう 1 つはコントローラー クライアント用です。

制御されたクライアントは常に接続を維持し、タスクを含むベクトルを持ち、タスクが追加された場合にこれらのタスクを実行します。接続が閉じられると停止する無限 while ループがあります。

コントローラー クライアントはタスクをベクターに追加します。

2 つのスレッド間で共有されるベクトルがあるため、競合状態が発生する可能性がありますが、1 つのスレッドはオブジェクトを追加するだけで、もう 1 つのスレッドはオブジェクトをポップするだけなので、それは必要ですか? この問題でフローチャートを作ってみましたが、よくわからないかもしれません。フローチャートの作成方法がよくわかりません: ここに画像の説明を入力

std::vector <CustomClass>これを実現するために C++ から使用しています。

前もってありがとう、
ief2

編集: 追加の質問:vector.size()呼び出しにはミューテックスが必要ですか?

0 投票する
1 に答える
1770 参照

c++ - カスタム オブジェクトのベクトルの push_back での C++ ランタイム エラー

私のクラスでは、任意のオブジェクトをベクター myCache にプッシュしようとすると、実行時エラーが発生します。ベクトルを適切に初期化していることは知っていますが、なぜこれが起こっているのか困惑しています。

CacheBlock.h:

誰でも助けることができますか?

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

c++ - オブジェクト ポインターのベクトル、初期化

私はまだ C++ の経験が浅いので、これが基本的なことである場合はご容赦ください。

以下のようなコードがあります。Lは抽象クラス (多数の純粋仮想関数を持つ) でありA、 、BおよびCはすべて から派生した通常のクラスLです。これらはいくつあっても構いませんが、それらはすべて異なります。

それは機能しますが、そのベクトルを初期化するためのより良い方法が本当に必要です。右?

ベクトルは、最初に初期化された後に変更されることは想定されていません。ただし、さまざまなオブジェクト自体が内部で変更される可能性があるため、const にすることはできないと思います。通常の配列よりもベクトルを選択したのは、その長さを手動で追跡したくないためです (エラーが発生しやすいことが判明しました)。

main理想的には、ベクトルの定義と初期化を別のファイルから取り出し、できれば別のファイルに取り出したいと思います#include。私が試してみると、コンパイラは「「=」トークンの前にコンストラクタ、デストラクタ、または型変換が必要である」と不平を言います。すべてのクラスAには、BデフォルトのCコンストラクターがあります。

deleteまた、 を使用して作成したものはすべて手動で作成する必要があるという印象を受けましたが、またはのいずれでもnew削除されません。試してみると、コンパイラは「type 'class std::vector<L*, std::allocator<L*> >' argument given to 'delete', expected pointer」と不平を言います。lsdeletedelete[]delete ls;

上記は安全ですか、それともメモリの問題を引き起こしますか?