พื้นที่เก็บข้อมูลมีโค้ดไลบรารี Abseil C++ Abseil คือคอลเลกชันโอเพ่นซอร์สของโค้ด C++ (สอดคล้องกับ C++14) ที่ออกแบบมาเพื่อเพิ่มไลบรารีมาตรฐาน C++
เกี่ยวกับ Absel
เริ่มต้นอย่างรวดเร็ว
อาคารโรยตัว
สนับสนุน
โค้ดแมป
ข่าวประชาสัมพันธ์
ใบอนุญาต
ลิงค์
Abseil คือคอลเลกชันโอเพ่นซอร์สของโค้ดไลบรารี C++ ที่ออกแบบมาเพื่อเพิ่มไลบรารีมาตรฐาน C++ รหัสไลบรารี Abseil รวบรวมจากฐานรหัส C++ ของ Google เอง ได้รับการทดสอบและใช้อย่างกว้างขวางในการผลิต และเป็นรหัสเดียวกับที่เราต้องใช้ในชีวิตประจำวันในการเขียนโค้ด
ในบางกรณี Abseil จัดเตรียมชิ้นส่วนที่ขาดหายไปจากมาตรฐาน C++; ในส่วนอื่นๆ Abseil มอบทางเลือกให้กับมาตรฐานสำหรับความต้องการพิเศษที่เราพบผ่านการใช้งานในฐานโค้ดของ Google เราระบุกรณีเหล่านั้นไว้อย่างชัดเจนในรหัสห้องสมุดที่เราแจ้งให้คุณทราบ
Abseil ไม่ได้ตั้งใจที่จะเป็นคู่แข่งของห้องสมุดมาตรฐาน เราเพิ่งพบว่ายูทิลิตี้เหล่านี้จำนวนมากมีจุดประสงค์ภายในฐานโค้ดของเรา และตอนนี้เราต้องการมอบทรัพยากรเหล่านั้นให้กับชุมชน C++ โดยรวม
หากคุณต้องการเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณได้ลองใช้ Abseil Quickstart เป็นอย่างน้อย Quickstart มีข้อมูลเกี่ยวกับการตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ การดาวน์โหลดโค้ด Abseil การรันการทดสอบ และการใช้งานไบนารี่อย่างง่าย
Bazel และ CMake เป็นระบบประกอบอย่างเป็นทางการของ Abseil ดูการเริ่มต้นอย่างรวดเร็วสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้าง Abseil โดยใช้ระบบการสร้าง Bazel หากคุณต้องการการสนับสนุน CMake โปรดตรวจสอบคำแนะนำในการสร้าง CMake และ CMake Quickstart
Abseil ปฏิบัติตามนโยบายการสนับสนุนพื้นฐานของ C++ ของ Google ดูตารางนี้สำหรับรายการคอมไพเลอร์ แพลตฟอร์ม และเครื่องมือสร้างเวอร์ชันที่รองรับในปัจจุบัน
Abseil มีส่วนประกอบไลบรารี C++ ต่อไปนี้:
base
ไลบรารี base
ประกอบด้วยรหัสการเริ่มต้นและรหัสอื่น ๆ ซึ่งรหัส Abseil อื่น ๆ ทั้งหมดขึ้นอยู่กับ โค้ดภายใน base
อาจไม่ขึ้นอยู่กับโค้ดอื่นใด (นอกเหนือจากไลบรารีมาตรฐาน C++)
algorithm
ไลบรารี algorithm
มีส่วนเพิ่มเติมในไลบรารี C++
และอัลกอริทึมดังกล่าวในเวอร์ชันที่ใช้คอนเทนเนอร์
cleanup
ไลบรารี cleanup
ประกอบด้วยประเภทการควบคุมการไหลสร้างเหมือน absl::Cleanup
ซึ่งใช้สำหรับการดำเนินการโทรกลับเมื่อออกจากขอบเขต
container
ไลบรารี container
ประกอบด้วยคอนเทนเนอร์สไตล์ STL เพิ่มเติม รวมถึงคอนเทนเนอร์ "Swiss table" ที่ไม่ได้เรียงลำดับของ Abseil
crc
ไลบรารี crc
มีโค้ดสำหรับการคำนวณการตรวจสอบข้อผิดพลาดแบบวนซ้ำของข้อมูล
debugging
ไลบรารี debugging
ประกอบด้วยโค้ดที่เป็นประโยชน์สำหรับการเปิดใช้งานการตรวจสอบการรั่วไหล และยูทิลิตี้สแต็กเทรซและการแสดงสัญลักษณ์
flags
ไลบรารี flags
มีโค้ดสำหรับจัดการแฟล็กบรรทัดคำสั่งสำหรับไลบรารีและไบนารีที่สร้างด้วย Abseil
hash
ไลบรารี hash
ประกอบด้วยเฟรมเวิร์กแฮชและการใช้งานฟังก์ชันแฮชเริ่มต้นสำหรับประเภทแฮชใน Abseil
log
ไลบรารี log
ประกอบด้วยแมโคร LOG
และ CHECK
และสิ่งอำนวยความสะดวกสำหรับการเขียนข้อความที่บันทึกไว้ออกไปยังดิสก์ stderr
หรือปลายทางที่ผู้ใช้ขยายได้
memory
ไลบรารี memory
มีสิ่งอำนวยความสะดวกในการจัดการหน่วยความจำที่เพิ่มไลบรารี
ของ C++
meta
ไลบรารี meta
ประกอบด้วยเวอร์ชันที่เข้ากันได้ของการตรวจสอบประเภทที่มีอยู่ในไลบรารี C++
เวอร์ชัน C++14 และ C++17
numeric
ไลบรารี numeric
ประกอบด้วยประเภทจำนวนเต็ม 128 บิต ตลอดจนการใช้งานฟังก์ชันทางคณิตศาสตร์ระดับบิตของ C++20
profiling
ไลบรารี profiling
มีโค้ดยูทิลิตี้สำหรับการทำโปรไฟล์เอนทิตี C++ ปัจจุบันเป็นการพึ่งพาส่วนตัวของห้องสมุด Abseil อื่น ๆ
random
ไลบรารี random
มีฟังก์ชันสำหรับสร้างค่าสุ่มเทียม
status
ไลบรารี status
ประกอบด้วยนามธรรมสำหรับการจัดการข้อผิดพลาด โดยเฉพาะ absl::Status
และ absl::StatusOr
strings
ไลบรารี strings
ประกอบด้วยรูทีนและยูทิลิตี้สตริงที่หลากหลาย รวมถึงเวอร์ชันที่เข้ากันได้กับ C++14 ของประเภท std::string_view
C++17
synchronization
ไลบรารี synchronization
ประกอบด้วยการทำงานพร้อมกันแบบดั้งเดิม (คลาส absl::Mutex
ของ Abseil ทางเลือกแทน std::mutex
) และนามธรรมการซิงโครไนซ์ที่หลากหลาย
time
ไลบรารี time
ประกอบด้วยนามธรรมสำหรับการคำนวณด้วยจุดที่แน่นอนของเวลา ระยะเวลา และการจัดรูปแบบและการแยกวิเคราะห์เวลาภายในโซนเวลา
types
ไลบรารี types
ประกอบด้วยประเภทยูทิลิตีที่ไม่ใช่คอนเทนเนอร์ เช่น ประเภท C++17 std::optional
เวอร์ชันที่เข้ากันได้กับ C++14
utility
ไลบรารี utility
ประกอบด้วยรหัสยูทิลิตี้และรหัสตัวช่วย
Abseil แนะนำให้ผู้ใช้ "live-at-head" (อัปเดตเป็นคอมมิตล่าสุดจากสาขาหลักบ่อยที่สุดเท่าที่จะทำได้) อย่างไรก็ตาม เราตระหนักดีว่าปรัชญานี้ใช้ไม่ได้กับทุกโครงการ ดังนั้นเราจึงจัดให้มีการเผยแพร่การสนับสนุนระยะยาวซึ่งเราจะแก้ไขแบ็คพอร์ตสำหรับข้อบกพร่องร้ายแรง ดูเอกสารการจัดการการเปิดตัวของเราสำหรับรายละเอียดเพิ่มเติม
ไลบรารี Abseil C++ ได้รับอนุญาตภายใต้เงื่อนไขของใบอนุญาต Apache ดูใบอนุญาตสำหรับข้อมูลเพิ่มเติม
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Abseil:
ปรึกษา Abseil Introduction ของเรา
อ่านเหตุใดจึงเลือกใช้ Abseil เพื่อทำความเข้าใจปรัชญาการออกแบบของเรา
อ่านการรับประกันความเข้ากันได้ของ Abseil เพื่อทำความเข้าใจทั้งสิ่งที่เราสัญญากับคุณ และสิ่งที่เราคาดหวังจากคุณเป็นการตอบแทน