問題タブ [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 を事前に入力しますか?
double のベクトルのベクトルのベクトルを作成し、これらすべてを手動で押し戻すことなく、既に (32,32,16) 要素を持たせたいと考えています。初期化中にそれを行う方法はありますか?(どの値がプッシュされるかは気にしません)。
3 次元配列が必要です。最初の次元には 32 個、2 番目の次元には 32 個、3 番目の次元には 16 個の要素があります。
c++ - 'std :: vector::イテレータそれ; ' コンパイルされません
私はこの関数を持っています:
そしてg++はこれらのエラーを出します:
それは単純なことであるに違いありませんが、それを10分間見つめた後、私は何も悪いことを見つけることができません。他の誰かがそれを見ますか?
c++ - std :: vector :: end()に関する質問
最近、次の関数のバグの修正を終えましたが、その答えに驚きました。私は次の関数を持っています(バグを見つける前のように書かれています):
この関数Item
は、特定の位置を持つ「items」ベクトル内のすべてのオブジェクトを検索し、それらを「items」から削除して、「vect」に配置します。後で、という名前の関数putItemsAt
は反対のことを行い、アイテムを「アイテム」に追加します。初めて、正常にgetItemsAt
動作します。ただし、 afterputItemsAt
が呼び出されると、forループインgetItemsAt
は'items'の終わりから実行されます。'it'は無効なItem
ポインタを指し、getPosition()
segfaultsします。思い切って、に変更it!=items.end()
してit<items.end()
、うまくいきました。誰か教えてもらえますか?SOを見回すerase
と、イテレータを無効にする必要があるかもしれませんが、それでも、最初に機能する理由はわかりません。
リストの消去がより効率的であるため、「アイテム」をベクトルからリストに変更することを計画しているので、私も興味があります。リストには演算子!=
がないので、リストに使用する必要があることはわかっています。<
リストを使用して同じ問題が発生しますか?
c++ - vector :: frontの参照は機能しますが、vector::beginは機能しません
私はこのコードを持っています:
それについて少し説明させてください。
client
は、によってアクセス可能なプライベートメンバーを持つtr1::shared_ptr
という名前のメンバーを持つオブジェクトを指すです。はのtypedefであり、のプライベートメンバーを返します。inventory
vector<itemPtr>
getMisc()
itemPtr
tr1::shared_ptr<Item>
getName()
std::string
Item
基本的に、client->inventory.getMisc()
要約するとstd::vector
、イテレータを最初の要素に到達させようとしています。
問題は、4行目がsegfaultsであるということです。明らかに、それが指すイテレータまたはshared_ptrのいずれかが無効です。最初のcerrステートメントを使用して、ベクトル自体が有効かどうかをテストしました。正しく出力されるので、正しいと思います。
私が間違っていることはありますか?あるいは、これをデバッグするために皆さんは何をしますか?
c++ - unsigned char std::vector から unsigned char[]?
簡単な質問です。 を取り出してをunsigned char std::vector
で吐き出す関数をどのように作成しますか。ありがとう!unsigned char[]
length
ああ、私の問題は std::vector の知識だったようです。std::vector はその値を線形に保持しないと常に信じていました。それは私の問題の多くを解決します。ありがとう!
c++ - std::vectorに含まれるオブジェクトのコンストラクタを呼び出す方法は?
オブジェクトの std::vector を作成するとき、これらのオブジェクトのコンストラクターが常に呼び出されるとは限りません。
これは私が得る出力です:
これは私が望むものです:
この例では、ベクターのサイズを変更してから、その要素を「手動で」初期化する必要がありますか?
ベクトルの要素が最初から最後まで順序付けられた方法で初期化されていないため、決定論的な動作を取得できないことが理由でしょうか?
私がやりたいことは、プログラム内、さまざまなコンテナー、コードのさまざまなポイントで作成されたオブジェクトの数を簡単に数え、それぞれに単一の ID を与えることです。
ありがとう!
c++ - std::vector は、その値型の代入演算子を使用して要素を push_back しますか?
もしそうなら、なぜですか?値型のコピー コンストラクタを使用しないのはなぜですか?
次のエラーが表示されます。
次のコードで g++ main.cpp を実行します。
c++ - std::vectorおよびstd::listの要素へのポインタ
私はstd::vector
いくつかのクラスの要素を持っていClassA
ます。std::map<key,ClassA*>
さらに、いくつかのキー値をベクトルに含まれる要素へのポインターにマップするを使用してインデックスを作成したいと思います。
要素がベクトルの最後に追加されたとき(挿入されていないとき)に、これらのポインターが有効なままである(そして同じオブジェクトを指す)という保証はありますか?つまり、次のコードは正しいでしょうか。
std::list
代わりに使用した場合、状況はどうstd::vector
ですか?
c++ - ベンチマーク用のランダム ベクトルを作成する最速の方法
そのため、C++ でいくつかの並べ替えアルゴリズムを実装して遊んでいますが、アルゴリズムを実行せずに入力データを作成するのに時間がかかるため、現時点でそれらをベンチマークするのは面倒です。現在、入力の各長さ (1000、2000、...) を 10 回テストして、ある程度平均的な時間を取得しています。これらの 10 回ごとに、次のようにしvector
て、正しい長さの新しい乱数を作成します。
これを行うより良い方法はありますか?rand() を 10000 に制限することを気にする必要がありますか、それとも私の OCD 脳がラウンド数を好むだけですか? (つまり、モジュロ演算は、10 のループごとに最大で - 現在 - 10,000 まで実行されていると考えると、実際にはかなりの時間がかかっている可能性があります。) または、実行するたびに新しいベクトルを本当に作成する必要があります選別?作成されたベクトルが偏っている可能性があると感じたため、そうしてきました。そのベクトルを生成してから10回使用すると、答えがかなりずれてしまう可能性があります...
c++ - ベクトルを含むstd::stringを返す
「CMtoaPlugin::listArnoldNodes()」を取得して文字列の「配列」を返そうとしています
しかし、これは私が得るものです、2つのエントリ、それは正しいですが、エントリの内容はそうではありません
アーノルドシェーダーを初期化する†¡/
アーノルドシェーダーを初期化します。
私は何を間違っているのですか