«stl» etiketlenmiş sorular

Standart Şablon Kütüphanesi veya STL, genel kapsayıcılar, yineleyiciler, algoritmalar ve işlev nesnelerinin bir C ++ kütüphanesidir. C ++ standartlaştırıldığında, STL'nin büyük kısımları Standart Kitaplığa kabul edildi ve Standart Kitaplıktaki bu kısımlara bazen hatalı olarak topluca "STL" denir.


5
C ++ Çift Adres Operatörü? (&&)
STL kaynak kodunu okuyorum ve &&adres operatörünün ne yapması gerektiği konusunda hiçbir fikrim yok. İşte bir kod örneği stl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } "Adresin Adresi" bir anlam ifade ediyor mu? Neden sadece bir adres yerine …

6
Aşırı yüklenmiş bir işleve nasıl bir işaretçi belirtebilirim?
Aşırı yüklenmiş bir fonksiyonu std::for_each()algoritmaya aktarmak istiyorum . Örneğin, class A { void f(char c); void f(int i); void scan(const std::string& s) { std::for_each(s.begin(), s.end(), f); } }; Derleyicinin f()yineleyici türüne göre çözümlenmesini beklerdim . Görünüşe göre, (GCC 4.1.2) bunu yapmaz. Peki hangisini f()istediğimi nasıl belirleyebilirim ?
137 c++  stl 

3
Baştan sona yineleme sırasında bir harita öğesinde erase () öğesini çağırırsanız ne olur?
Aşağıdaki kodda bir harita boyunca döngü yapıyorum ve bir elemanın silinmesi gerekip gerekmediğini test ediyorum. Elemanı silmek ve yinelemeyi sürdürmek güvenli mi yoksa anahtarları başka bir kapta toplamam ve silmeyi () çağırmak için ikinci bir döngü yapmam gerekir mi? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it = port_map.begin(); pm_it != port_map.end(); pm_it++) …
133 c++  stl  iterator 

7
Bir çift vektörünü çiftin ikinci elemanına göre nasıl sıralayabilirim?
Bir çift vektörüm varsa: std::vector<std::pair<int, int> > vec; Çiftin ikinci unsuruna göre listeyi artan sırada sıralamanın kolay bir yolu var mı? Ben işi yapacak biraz fonksiyon nesnesi yazabilirsiniz biliyorum ama mevcut parçalarını kullanmak için bir yol yoktur STL ve std::lessdoğrudan işi yapmak için? DÜZENLEME: Sıralamak için üçüncü bağımsız değişkene geçmek …
133 c++  stl  stdvector 

2
Std :: vector öğesinin başlangıç ​​boyutu nasıl ayarlanır?
Bir var vector<CustomClass*>ve vektöre birçok öğe koydum ve hızlı erişime ihtiyacım var, bu yüzden listeyi kullanmıyorum. Vektörün başlangıç ​​boyutu nasıl ayarlanır (örneğin, yeni yerleştirdiğimde kopyalamadan kaçınmak için 20.000 basamak olacak şekilde)?
130 c++  stl 

7
Neden std :: queue :: pop değeri dönmüyor?
Bu sayfadan geçtim ama bunun sebebini anlayamıyorum. Orada bahsediliyor "hiç bir değer döndürmemesi ve istemcilerin sıranın önündeki değeri incelemek için front () kullanmasını gerektirmesi daha mantıklıdır" Ancak front () 'den bir öğeyi incelemek, o öğenin lvalue içinde kopyalanmasını da gerektiriyordu. Örneğin bu kod segmentinde std::queue<int> myqueue; int myint; int result; …
123 c++  stl 


10
Bir dizinin içeriğini döngü yapmadan C ++ 'da bir std :: vektörüne nasıl kopyalarsınız?
Daha sonraki işlemler için kaydetmem gereken programın farklı bir bölümünden işlevime aktarılan bir dizi değerim var. Verileri işleme zamanı gelmeden fonksiyonumun kaç kez çağrılacağını bilmediğim için dinamik bir depolama yapısına ihtiyacım var, bu yüzden bir std::vector. Standart döngüyü push_backtüm değerlere tek tek yapmak zorunda kalmak istemiyorum, hepsini benzer bir şey …
122 c++  stl  vector  copy 


13
std :: map için remove_if eşdeğeri
Belirli bir duruma göre haritadan bir dizi öğeyi silmeye çalışıyordum. STL algoritmalarını kullanarak bunu nasıl yaparım? Başlangıçta kullanmayı düşündüm remove_ifama bu mümkün değil, çünkü remove_if ilişkisel kapsayıcı için çalışmıyor. Harita için çalışan herhangi bir "remove_if" eşdeğeri algoritması var mı? Basit bir seçenek olarak, haritayı dolaşıp silmeyi düşündüm. Ancak haritada döngü …
118 c++  stl  map 


4
Std :: swap () nasıl aşırı yüklenir
std::swap()birçok standart konteyner tarafından kullanılır (örneğin std::listvestd::vector ) tarafından sıralama ve hatta atama sırasında kullanılır. Ancak swap()öğesinin standart uygulaması çok genelleştirilmiştir ve özel türler için oldukça verimsizdir. Böylece, std::swap()özel tipe özgü bir uygulama ile aşırı yükleme ile verimlilik elde edilebilir . Ancak, standart konteynerler tarafından kullanılması için onu nasıl uygulayabilirsiniz?

5
C ++ harita erişimi niteleyicileri atar (const)
Aşağıdaki kod, haritayı yönteme göre geçirmenin niteleyicileri constattığını söylüyor operator[]: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << mw.get_value(42) << endl; return 0; …
113 c++  stl  const  maps 

9
Bir haritaya eklemenin tercih edilen / deyimsel yolu nedir?
Öğeleri bir içine eklemenin dört farklı yolunu belirledim std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); Bunlardan hangisi tercih edilen / deyimsel yoldur? (Ve düşünmediğim başka bir yol var mı?)
113 c++  stl  insert  stdmap  std-pair 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.