คำถามติดแท็ก container-data-type

9
เหตุใดฉันจึงไม่สามารถสร้างเวกเตอร์ของการอ้างอิงได้
เมื่อฉันทำสิ่งนี้: std::vector<int> hello; ทุกอย่างใช้งานได้ดี อย่างไรก็ตามเมื่อฉันทำให้เป็นเวกเตอร์ของการอ้างอิงแทน: std::vector<int &> hello; ฉันได้รับข้อผิดพลาดที่น่ากลัวเช่น ข้อผิดพลาด C2528: 'ตัวชี้': ตัวชี้ไปยังการอ้างอิงนั้นผิดกฎหมาย ฉันต้องการใส่การอ้างอิงจำนวนมากเพื่อวางโครงสร้างในเวกเตอร์เพื่อที่ฉันจะได้ไม่ต้องยุ่งกับพอยน์เตอร์ ทำไมเวกเตอร์ถึงโกรธเคืองเรื่องนี้? ตัวเลือกเดียวของฉันคือใช้เวกเตอร์พอยน์เตอร์แทนหรือไม่

7
เหตุใดจึงต้องใช้ฟังก์ชันเริ่มต้นและสิ้นสุดที่ไม่ใช่สมาชิกใน C ++ 11
คอนเทนเนอร์มาตรฐานทุกตัวมี a beginและendเมธอดสำหรับส่งคืนตัววนซ้ำสำหรับคอนเทนเนอร์นั้น อย่างไรก็ตาม C ++ 11 ได้เปิดตัวฟังก์ชั่นฟรีที่เรียกว่าstd::beginและฟังก์ชั่นการstd::endโทรbeginและendสมาชิก ดังนั้นแทนที่จะเขียน auto i = v.begin(); auto e = v.end(); คุณต้องการเขียน auto i = std::begin(v); auto e = std::end(v); ในคำพูดของเขาการเขียน Modern C ++ Herb Sutter บอกว่าคุณควรใช้ฟังก์ชั่นฟรีทันทีเมื่อคุณต้องการเริ่มต้นหรือสิ้นสุดตัววนซ้ำสำหรับคอนเทนเนอร์ อย่างไรก็ตามเขาไม่ได้ลงรายละเอียดว่าทำไมคุณถึงต้องการ การดูรหัสจะช่วยให้คุณประหยัดอักขระทั้งหมดหนึ่งตัว ดังนั้นเท่าที่ภาชนะมาตรฐานไปฟังก์ชั่นฟรีดูเหมือนจะไร้ประโยชน์อย่างสมบูรณ์ Herb Sutter ระบุว่ามีประโยชน์สำหรับภาชนะที่ไม่ได้มาตรฐาน แต่อีกครั้งเขาไม่ได้ลงรายละเอียด ดังนั้นคำถามคือสิ่งที่รุ่นฟังก์ชั่นอิสระของstd::beginและstd::endทำนอกเหนือจากการเรียกรุ่นฟังก์ชั่นสมาชิกที่สอดคล้องกันและทำไมคุณต้องการที่จะใช้พวกเขา?

10
ฉันจะใช้คอนเทนเนอร์ STL ใดในสถานการณ์ใด
ฉันอ่านค่า STL ในหนังสือของฉันบน C ++ โดยเฉพาะในส่วนของ STL และคอนเทนเนอร์ ตอนนี้ฉันเข้าใจแต่ละคนทุกคนมีคุณสมบัติเฉพาะของตัวเองและฉันใกล้จะจดจำพวกเขาทั้งหมด ... แต่สิ่งที่ฉันยังไม่เข้าใจคือสิ่งที่พวกเขาใช้ คำอธิบายคืออะไร รหัสตัวอย่างเป็นที่ต้องการมาก

3
'size_t' เทียบกับ 'คอนเทนเนอร์ :: size_type'
มีความแตกต่างระหว่างsize_tและcontainer::size_typeหรือไม่? สิ่งที่ฉันเข้าใจคือsize_tทั่วไปกว่าและสามารถใช้กับsize_types ใดก็ได้ แต่container::size_typeเหมาะสำหรับคอนเทนเนอร์บางประเภทหรือไม่?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.