คำถามติดแท็ก range-v3

1
เหตุใดจึงไม่สามารถใช้ช่วงสำหรับการทำงานของไลบรารีของไพพ์
โจนาธาน Boccara (ผู้เขียนเหมือนเจ้าของภาษา C ++ ) เขียนห้องสมุดที่เรียกว่าท่อ "piping" หน้าหลักของที่เก็บกล่าวว่าไม่เหมือนกับการใช้ช่วงแม้ว่ามันจะดูเหมือนกัน: มันไม่ได้ขึ้นอยู่กับการดึงแบบขี้เกียจ แต่อยากที่จะผลักดัน แต่มันระบุไว้ว่าเราไม่สามารถใช้ไลบรารีช่วงเพื่อดำเนินการ 'ไปป์' ที่หลากหลาย ตัวอย่างเช่น: เปิดเครื่องรูด - รับอินพุตซิป - ช่วงของ k-tuples เป็นหลัก - และสร้างเอาต์พุตแยกอิสระ k fork - สร้างสำเนาของคอนเทนเนอร์ / พิสัยหลายชุด (อิสระ) ฉันไม่เข้าใจว่าทำไมในหลักการแล้วเป็นกรณีนี้ (แน่นอนว่ามีข้อยกเว้นของช่วงที่คุณไม่สามารถรับตัววนซ้ำสุดท้าย / Sentinel ได้)

1
เราจะสามารถสร้างคอนเทนเนอร์ด้วยมุมมองใน C ++ 20 ได้หรือไม่?
ช่วงกำลังมาถึง C ++ ด้วยเวอร์ชันมาตรฐาน C ++ 20 คำถามของฉัน: เราจะสามารถสร้างคอนเทนเนอร์ไลบรารีมาตรฐาน (ปัจจุบัน) กับช่วงใด ๆ ได้หรือไม่ และที่สำคัญยิ่งกว่าด้วยมุมมองระยะไกล? ตัวอย่างเช่นจะ: #include <vector> #include <iostream> #include <ranges> int main() { auto sq = [](int x) { return x * x; }; std::vector<int> vec { 3, 4, 5 }; std::vector<int> squares { std::ranges::views::transform(vec, sq) }; for(auto i …
10 c++  c++20  range-v3 

2
ฉันจะคืนค่า piped ชั่วคราวไปยังการทำงานแบบ range ได้หรือไม่?
สมมติว่าฉันมีgenerate_my_rangeคลาสที่โมเดล a range(โดยเฉพาะคือregular) จากนั้นรหัสต่อไปนี้ถูกต้อง: auto generate_my_range(int some_param) { auto my_transform_op = [](const auto& x){ return do_sth(x); }; return my_custom_rng_gen(some_param) | ranges::views::transform(my_transform_op); } auto cells = generate_my_range(10) | ranges::to<std::vector>; มีการmy_custom_rng_gen(some_param)ดำเนินการโดยมูลค่าโดย (ตอนแรก) ประกอบท่อหรือฉันจะมีการอ้างอิงห้อยเมื่อฉันออกจากgenerate_my_rangeขอบเขต? มันจะเหมือนกันกับการเรียก functionnal ranges::views::transform(my_custom_rng_gen(some_param),my_transform_op)หรือไม่? มันจะถูกต้องหรือไม่ถ้าฉันใช้การอ้างอิง lvalue เช่น: auto generate_my_range(int some_param) { auto my_transform_op = [](const auto& x){ return do_sth(x); }; …
9 c++  range-v3 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.