問題タブ [push-back]
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++ - 一度に複数の int をベクトルに渡すにはどうすればよいですか?
現在、vector.push_back()
複数回使用する必要がある場合。
私が現在使用しているコードは
一度だけ使用vector.push_back()
して複数の値をベクトルに渡す方法はありますか?
c++ - ポインタをC++ベクトルにプッシュし、クリーンアップします
異なるシステム間でいくつかのコードを変換していますが、c++ベクトルに関して質問があります。
私がこのようなことをした場合:
ヘッダーファイル:
C ++ファイルのルーチンでは:
困りますか?私の仮定では、ベクターは、削除を呼び出すと無効になったデータへのポインターを保持することになります。データが最初にコピーされるように、Vertexのコピーコンストラクターを作成する必要がありますか?
追加:
問題は、割り当てられたメモリへのポインタをstd :: vector <>に配置し、ローカルに割り当てられたデータをクリーンアップする方法に関係していました。基本的に、データをベクターにコピーして、コピーをクリーンアップできるようにするにはどうすればよいですか。
元のコードはDirectXにありました。iPhoneに移植しています。元のコードは、以下を使用してルーチンでサブメッシュをローカルに割り当てました。
ID3DXMeshをベクターに追加する方法を複製しようとしていますが、ルーチンでそのスコープを失います。
D3DXCreateMesh()にアクセスできないため、必要な頂点を割り当て、それらをベクトルにスローして、クリーンアップするだけだと思いました。
申し訳ありませんが、問題はデータのチャンクを割り当て、std :: vector <>にポインタを置き、ローカルに割り当てられたメモリをクリーンアップする方法です。:)
コピーコンストラクターはどこかに書かれなければならないと思いました。どこで、どのようにすればいいのかわからなかった。
サブグリッドは次のようになります。
そして、それらが追加されるベクトルは次のようになります。
c++ - push_back がベクトル c++ に数値を追加しない
「push_back」を使用してベクトル「左」または「右」から「mergedList」に値を追加しようとすると、「マージ」関数内のどこかで問題があるように思われるマージソートプログラムをデバッグしようとしています。以下は、gdb デバッグ セッションからの抜粋です (その下に私の完全なプログラム コードが続きます)。
これは、merge の最初の呼び出しで発生します。「print left[0]」を使用して「vector left」の値にアクセスでき、期待どおりの値を取得できました (「left」ベクトルのすべての数値は 1 ~ 50000 です)。 i = 0 の場合のコード:
"mergedList.push_back(左[i]);" 次に、デバッガーを使用してmergedList [0]を出力すると、left [0]の追加が失敗したようです。
push_back を誤解していますか? またはベクトル?私の質問が不明確で申し訳ありませんが、どうすれば改善できるか教えてください!
GDB デバッグ セッション:
c++ - C++でのベクトルプッシュバック操作の型キャスト
私は2つのベクトルを持っています
ある時点で、あるスタックからいくつかの要素をポップして、別のスタックにプッシュする必要があります。
ただし、eclipseはエラー、無効な引数をスローします。しかし、入力を型キャストすると正常に動作します。
では、なぜこの型キャストが必要なのですか?私は(主にC ++ Primerで)C++11に従って型キャストを避ける必要があることを読んでいました。
c++ - ベクトル push_back により未処理の例外が発生する
コンパイラが push_back 操作を実行しようとするまで、すべてが機能しています。if条件で適切な値が返されています。
私はアイテムを次のように宣言しました:
//.cpp ファイル内
次のエラーが表示されます。
PS: push_back 操作を使用する関数がもう 1 つありますが、正常に動作しています。
誰でもこれで私を助けることができますか?
これでも同じエラーが発生します。
c++ - vector.push_back
特定の形式のデータ ファイルから読み取るアプリケーションを作成しています。このファイルでは、ベクター オブジェクトへのポインターの 2D 配列を動的に作成しました。基本的に、ファイル全体を読み取り、特定の文字列パターンを見つけると停止して読み取ります
現在、pushBack は大きな数であり、最大 20000 になる可能性がありますが、ファイルによって異なります。
このコードの問題は、実行時エラーや例外がスローされないことです。エラーをキャッチしようとしました。プログラムは簡単に終了します。確かに、行と後者の印刷物を追加しましcout << "position1" << endl;
たcout << "position2" << endl;
。
あなたが推測していない場合:
tempTestString
およびACCEL
- 文字列オブジェクト
sstream
- 文字列ストリーム オブジェクト
array
- 動的メモリ内の 2D 構造体配列
vectorName
- ベクトル オブジェクトへのポインタ、ポインタが指す構造体のメンバarray
補遺:
したがって、いくつかのコメントに応えて、すべての変数が作成されたコードの他の部分を次に示します。
配列
構造体名
tempDim1 と tempDim2 は両方ともconst ints
、それぞれ値 2 と 3 です。pushBack には最大 20000 の値を指定できます
c++ - C ++ push_back vs Insert vs emplace
私は現在、C++でベクトルを使用してアプリケーションを作成しています。
事前最適化がすべての悪の根源であることを私は知っています。
しかし、私は本当に好奇心をそそられずにはいられません。
他のベクトルの一部を別のベクトルに追加しています。
ベクトルのサイズは300を変更しないと言います。
私はいつもベクトルの最後に追加するので
実行する方が速いですか:
a.reserve(300);
a.insert(a.end(), b.begin(), b.end());
または、追加したいベクトルをループして、各アイテムを個別に(事前に予約しながら)またはで追加する方が速いでしょうpush_back
かemplace
。(どちらが速いかわからない)
誰でもこれについて私を助けることができますか?
c++ - C++ std::string 追加 vs push_back()
これは本当に私自身の興味のための質問であり、ドキュメントでは判断できませんでした。
http://www.cplusplus.com/reference/string/string/で、追加が複雑であることがわかります。
「特定されていませんが、通常、新しい文字列の長さは直線的です。」
push_back() には複雑さがあります。
「特定されていません。一般的に償却定数ですが、新しい文字列の長さは最大で線形です。」
おもちゃの例として、「foo」という文字を文字列に追加したいとします。だろう
と
まったく同じことになるの?それとも違いはありますか?push_back は呼び出しごとにメモリを確保する必要があるかもしれませんが、コンパイラは文字列を指定された文字数に拡張するために必要なメモリ量を知っているため、append がより効率的であると考えるかもしれません。
c++ - std::list の使用によるセグメンテーション違反
私は C++ にやってくる Java ユーザーですが、このステートメントの何が問題なのかを理解するのに苦労しています。私のプログラムは、push_back
コマンドを入力した場所でセグメンテーション違反を起こしています。だから、具体的にどうなのか気になります。
完全なコードは次のとおりです。
c++ - マップコンテナをプッシュバック
私たちはこの地図を手に入れました:
この関数は、Vectorのpush_back関数と同じでしょうか。
sizeはコンテナのサイズを返すので、正しいと思いました。次のシナリオによれば、次のようになります。index 0 = 200 index 1 = 150 100をプッシュバックする場合、values.size()は2を返します。したがって、通常のpush_backがインデックス2内に入るのと同じように、正しいでしょうか。