タグ付けされた質問 「stl」

標準テンプレートライブラリ(STL)は、汎用コンテナ、イテレータ、アルゴリズム、および関数オブジェクトのC ++ライブラリです。C ++が標準化されたとき、STLの大部分が標準ライブラリに採用されました。標準ライブラリのこれらの部分は、誤ってまとめて「STL」と呼ばれることもあります。


11
std :: queueを効率的にクリアするにはどうすればよいですか?
JobQueueクラスの実装にstd :: queueを使用しています。(基本的に、このクラスはFIFO方式で各ジョブを処理します)。1つのシナリオでは、キューを1回でクリアします(キューからすべてのジョブを削除します)。std :: queueクラスで使用できるclearメソッドがありません。 JobQueueクラスのclearメソッドを効率的に実装するにはどうすればよいですか? ループでポップする簡単な解決策が1つありますが、もっと良い方法を探しています。 //Clears the job queue void JobQueue ::clearJobs() { // I want to avoid pop in a loop while (!m_Queue.empty()) { m_Queue.pop(); } }
166 c++  stl  queue 


10
オブジェクト全体またはオブジェクトへのポインターをコンテナーに格納する必要がありますか?
新しいシステムを一から設計する。STLを使用して、特定の長寿命オブジェクトのリストとマップを保存します。 質問:オブジェクトにコピーコンストラクターがあり、オブジェクトのコピーをSTLコンテナー内に格納していることを確認する必要がありますか、それとも通常は自分でライフとスコープを管理し、それらのオブジェクトへのポインターをSTLコンテナーに格納するだけの方が良いですか? 私はこれが詳細にいくらか不足していることを理解していますが、私はこれらの解決策の両方が可能であることを知っているので、存在する場合は「理論的な」より良い答えを探しています。 ポインターを操作することの2つの非常に明らかな欠点:1)これらのオブジェクトの割り当て/割り当て解除を、STLを超えたスコープで自分で管理する必要があります。2)一時オブジェクトをスタックに作成してコンテナに追加できません。 他に欠けているものはありますか?
162 c++  stl  pointers 

3
生データへのstd :: vectorポインターを取得する方法?
配列std::vectorとして使用しようとしていますchar。 私の関数はvoidポインターを受け取ります: void process_data(const void *data); 私が単にこのコードを使用する前に: char something[] = "my data here"; process_data(something); 期待どおりに機能しました。 しかし、今はの動的性が必要なので、std::vector代わりにこのコードを試しました。 vector<char> something; *cut* process_data(something); 問題は、charのベクトルを関数に渡して、ベクトルの生データにアクセスできるようにする方法です(それがどの形式であるかに関係なく、フロートなど)? 私はこれを試しました: process_data(&something); この: process_data(&something.begin()); しかし、意味不明なデータへのポインタを返し、後者は警告を出しました:warning C4238: nonstandard extension used : class rvalue used as lvalue。
160 c++  stl  vector 

3
標準コンテナの複雑さの保証は何ですか?
どうやら;-)標準コンテナは何らかの形の保証を提供します。 どのタイプの保証があり、正確には、異なるタイプのコンテナの違いは何ですか? SGIページからの作業(STLについて)私はこれを思いつきました: Container Types: ================ Container: Forward Container Reverse Container Random Access Container Sequence Front Insert Sequence Back Insert Sequence Associative Container Simple Associative Container Pair Associative Container Sorted Associative Container Multiple Associative Container Container Types mapped to Standard Containers ============================================= std::vector: Sequence Back Sequence Forward/Reverse/Random Container std::deque: Sequence …
160 c++  stl  containers  big-o 

9
C ++ valarray対vector
私はベクターが大好きです。彼らは気の利いた、速いです。しかし、私はvalarrayと呼ばれるものが存在することを知っています。なぜベクトルではなくvalarrayを使用するのですか?valarrayには構文上の砂糖があることは知っていますが、それ以外の場合、いつ役立つのですか?

6
std :: mapを反復する順序はわかっていますか(標準で保証されていますか)?
つまり、std::mapの要素はキーに従ってソートされています。したがって、キーが整数であるとしましょう。からstd::map::begin()をstd::map::end()使用して反復する場合for、標準では、昇順でソートされたキーを持つ要素を結果として反復することを保証していますか? 例: std::map<int, int> map_; map_[1] = 2; map_[2] = 3; map_[3] = 4; for( std::map<int, int>::iterator iter = map_.begin(); iter != map_.end(); ++iter ) { std::cout << iter->second; } これは印刷が保証されています234か、それとも実装が定義されていますか? 現実の理由:私が持っているstd::mapとintキー。非常にまれな状況で、具体的なint値よりも大きいキーを使用して、すべての要素を反復処理します。うん、それstd::vectorはより良い選択のように思えますが、私の「非常にまれな状況」に注意してください。 編集:私は知っている、の要素std::mapがソートされていることを知っています...それを指摘する必要はありません(ここでのほとんどの答えに対して)。私の質問にもそれを書きました。 コンテナーを反復処理するときに、イテレーターと順序について尋ねていました。答えてくれて@Kerrek SBに感謝します。
158 c++  dictionary  stl  standards 

2
iterator-> secondはどういう意味ですか?
C ++では、タイプは何std::map<>::iteratorですか? itタイプのオブジェクトにはを返すstd::map<A,B>::iteratorオーバーロードがoperator ->ありstd::pair<A,B>*、にstd::pair<>はメンバーfirstとsecondメンバーがあることを知っています。 しかし、これらの2つのメンバーは何に対応し、マップに格納されている値にアクセスする必要があるのはなぜit->secondですか?
157 c++  stl  iterator 

7
1つのベクトルを別のベクトルにコピーする高速な方法
私は2つの方法を好む: void copyVecFast(const vec<int>& original) { vector<int> newVec; newVec.reserve(original.size()); copy(original.begin(),original.end(),back_inserter(newVec)); } void copyVecFast(vec<int>& original) { vector<int> newVec; newVec.swap(original); } どうやってやるの?
155 c++  algorithm  stl 

5
ベクトルが割り当てられると、それらはヒープまたはスタック上のメモリを使用しますか?
次の説明はすべて正しいですか? vector<Type> vect; //allocates vect on stack and each of the Type (using std::allocator) also will be on the stack vector<Type> *vect = new vector<Type>; //allocates vect on heap and each of the Type will be allocated on stack vector<Type*> vect; //vect will be on stack and Type* will be …
151 c++  stl  vector  stack  heap 





弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.