คำถามติดแท็ก std

ไลบรารีมาตรฐาน C ++ และเนมสเปซ ใช้ร่วมกับ [c ++]

14
แผนที่มาตรฐาน :: ที่ติดตามลำดับของการแทรก?
ขณะนี้ฉันมีstd::map<std::string,int>ที่เก็บค่าจำนวนเต็มให้กับตัวระบุสตริงที่ไม่ซ้ำกันและฉันค้นหาด้วยสตริง ส่วนใหญ่ทำในสิ่งที่ฉันต้องการยกเว้นว่าจะไม่ติดตามลำดับการแทรก ดังนั้นเมื่อฉันทำแผนที่ซ้ำเพื่อพิมพ์ค่าพวกมันจะถูกจัดเรียงตามสตริง แต่ฉันต้องการให้เรียงลำดับตามลำดับของการแทรก (ครั้งแรก) ฉันคิดจะใช้ a vector<pair<string,int>>แทน แต่ฉันต้องค้นหาสตริงและเพิ่มค่าจำนวนเต็มประมาณ 10,000,000 ครั้งดังนั้นฉันไม่รู้ว่า a std::vectorจะช้าลงอย่างมากหรือไม่ มีวิธีใช้std::mapหรือมีstdภาชนะอื่นที่เหมาะกับความต้องการของฉันมากกว่านี้หรือไม่? [ฉันใช้ GCC 3.4 และฉันอาจมีค่าไม่เกิน 50 คู่ในตัวstd::map] ขอบคุณ.

5
เหตุใด Rand ()% 6 จึงเอนเอียง
เมื่ออ่านวิธีใช้ std :: rand ฉันพบโค้ดนี้ในcppreference.com int x = 7; while(x > 6) x = 1 + std::rand()/((RAND_MAX + 1u)/6); // Note: 1+rand()%6 is biased มีอะไรผิดปกติกับนิพจน์ด้านขวา? พยายามแล้วและทำงานได้อย่างสมบูรณ์
109 c++  random  std 

8
มีคลาสเรนจ์ใน C ++ 11 สำหรับใช้กับ range ตามลูปหรือไม่?
ฉันพบว่าตัวเองเขียนสิ่งนี้เมื่อไม่นานมานี้: template <long int T_begin, long int T_end> class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return i_; } const iterator &operator ++() { ++i_; return *this; } iterator operator ++(int) { iterator copy(*this); ++i_; return copy; } bool operator ==(const …
101 c++  c++11  std 


2
ป้องกันไม่ให้ฟังก์ชันรับ const std :: string & จากการยอมรับ 0
มีค่าหนึ่งพันคำ: #include<string> #include<iostream> class SayWhat { public: SayWhat& operator[](const std::string& s) { std::cout<<"here\n"; // To make sure we fail on function entry std::cout<<s<<"\n"; return *this; } }; int main() { SayWhat ohNo; // ohNo[1]; // Does not compile. Logic prevails. ohNo[0]; // you didn't! this compiles. return 0; } คอมไพเลอร์ไม่ได้บ่นเมื่อผ่านหมายเลข …

6
เหตุใด std :: initializer_list จึงไม่เป็นภาษาในตัว
เหตุใดจึงไม่มีstd::initializer_listภาษาหลักในตัว สำหรับฉันแล้วดูเหมือนว่ามันเป็นคุณสมบัติที่สำคัญของ C ++ 11 แต่ก็ไม่มีคำหลักที่สงวนไว้ (หรือบางอย่างที่เหมือนกัน) แต่initializer_listเป็นเพียงคลาสเทมเพลตจากไลบรารีมาตรฐานที่มีการแมปพิเศษโดยนัยจากไวยากรณ์รายการวงเล็บปีกกา ใหม่{...}ที่คอมไพเลอร์จัดการ ตอนแรกคิดว่าโซลูชันนี้ค่อนข้างแฮ็ค นี่เป็นวิธีการใช้งานส่วนเพิ่มเติมใหม่ในภาษา C ++: โดยบทบาทโดยปริยายของคลาสเทมเพลตบางคลาสไม่ใช่ภาษาหลักหรือไม่? โปรดพิจารณาตัวอย่างเหล่านี้: widget<int> w = {1,2,3}; //this is how we want to use a class เหตุใดจึงเลือกคลาสใหม่: widget( std::initializer_list<T> init ) แทนที่จะใช้สิ่งที่คล้ายกับแนวคิดเหล่านี้: widget( T[] init, int length ) // (1) widget( T... init ) // (2) widget( std::vector<T> …

3
ทำไมไม่มี std :: stou?
C ++ 11 เพิ่มฟังก์ชันการแปลงสตริงใหม่: http://en.cppreference.com/w/cpp/string/basic_string/stoul ซึ่งรวมถึง stoi (string to int), stol (string to long), stoll (string to long long), stoul (string to unsigned long), stoull (string to unsigned long long) สิ่งที่โดดเด่นในกรณีที่ไม่มีคือฟังก์ชัน stou (string to unsigned) มีเหตุผลบางอย่างที่ไม่จำเป็น แต่เหตุผลอื่น ๆ ทั้งหมดคืออะไร? เกี่ยวข้อง: ไม่มีฟังก์ชัน "sto {short, unsigned short}" ใน C ++ 11?
96 c++  string  c++11  std 

2
การประกาศมีผลต่อเนมสเปซมาตรฐานหรือไม่
#include <iostream> #include <cmath> /* Intentionally incorrect abs() which seems to override std::abs() */ int abs(int a) { return a > 0? -a : a; } int main() { int a = abs(-5); int b = std::abs(-5); std::cout<< a << std::endl << b << std::endl; return 0; } ฉันคาดว่าผลลัพธ์จะเป็น-5และ5แต่ผลลัพธ์คือ-5และ-5. ฉันสงสัยว่าทำไมถึงเกิดกรณีนี้ขึ้น? …
96 c++  std  reserved 

9
ฉันจะค้นหา / ค้นหาและแทนที่ในสตริงมาตรฐานได้อย่างไร
มีวิธีแทนที่การเกิดขึ้นทั้งหมดของสตริงย่อยด้วยสตริงอื่นstd::stringหรือไม่? ตัวอย่างเช่น: void SomeFunction(std::string& str) { str = str.replace("hello", "world"); //< I'm looking for something nice like this }
95 c++  replace  std 

4
วิธีการประกาศ std :: unique_ptr และการใช้งานคืออะไร?
ฉันพยายามที่จะเข้าใจวิธีstd::unique_ptrการทำงานและการที่ผมพบนี้เอกสาร ผู้เขียนเริ่มจากตัวอย่างต่อไปนี้: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; unique_ptr<double> uptr2 (pd); // overloaded * and -> *uptr2 = 23.5; unique_ptr<std::string> ups (new std::string("hello")); int len=ups->size(); สิ่งที่ทำให้ฉันสับสนคือในบรรทัดนี้ unique_ptr<int> …
95 c++  pointers  std  unique-ptr 

5
จะหาจุดตัดของสอง std :: set ใน C ++ ได้อย่างไร?
ฉันพยายามหาจุดตัดระหว่างสอง std :: set ใน C ++ แต่ฉันได้รับข้อผิดพลาดเรื่อย ๆ ฉันสร้างการทดสอบตัวอย่างเล็กน้อยสำหรับสิ่งนี้ #include <iostream> #include <vector> #include <algorithm> #include <set> using namespace std; int main() { set<int> s1; set<int> s2; s1.insert(1); s1.insert(2); s1.insert(3); s1.insert(4); s2.insert(1); s2.insert(6); s2.insert(3); s2.insert(0); set_intersection(s1.begin(),s1.end(),s2.begin(),s2.end()); return 0; } โปรแกรมหลังไม่สร้างเอาต์พุตใด ๆ แต่ฉันคาดว่าจะมีชุดใหม่ (ขอเรียกว่าs3) โดยมีค่าต่อไปนี้: s3 = [ 1 , …

4
cc1plus: ข้อผิดพลาด: ไม่รู้จักตัวเลือกบรรทัดคำสั่ง“ -std = c ++ 11” พร้อม g ++
ฉันกำลังพยายามรวบรวมโดยใช้g++และแฟล็ก-std=c++11หรือc++0x อย่างไรก็ตามฉันได้รับข้อผิดพลาดนี้ cc1plus: error: unrecognized command line option "-std=c++11" g ++ - รุ่น g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR …

5
อะไรจะ 'std :;' ทำใน c ++?
ฉันเพิ่งแก้ไขโค้ดบางส่วนและพบข้อบกพร่องที่มีอยู่แล้วในบรรทัดเดียวภายในฟังก์ชัน: std:;string x = y; โค้ดนี้ยังคงคอมไพล์และทำงานตามที่คาดไว้ คำจำกัดความของสตริงทำงานได้เนื่องจากไฟล์นี้using namespace std;ดังนั้นจึงstd::ไม่จำเป็นในตอนแรก คำถามคือทำไมต้องstd:;รวบรวมและถ้ามีอะไรทำ?
89 c++  std  colon 

6
ฉันจะรวมค่าแฮชใน C ++ 0x ได้อย่างไร
C ++ 0x hash<...>(...)เพิ่ม ฉันไม่สามารถหาhash_combineแต่ฟังก์ชั่นที่นำเสนอในการเพิ่ม อะไรคือวิธีที่สะอาดที่สุดในการนำสิ่งนี้ไปใช้? บางทีอาจจะใช้ C ++ 0x xor_combine?
87 c++  c++11  boost  hash  std 

2
std :: is_function ใช้งานอย่างไร?
การดำเนินการต่อไปนี้เป็นstd::is_functionอย่างไร template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (จากการอ้างอิง CPP ) ดูเหมือนว่าฉันintจะเป็นฟังก์ชั่นภายใต้คำจำกัดความนี้ ฉันกำลังคิดถึงอะไร
82 c++  templates  std  sfinae 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.