"STL" ถูกเขียนโดย Alexander Stepanovในไม่กี่วันก่อนที่ C ++ จะได้มาตรฐาน C ++ มีอยู่ในยุค 80 แต่สิ่งที่เราเรียกว่า " C ++ " เป็นภาษาที่ได้มาตรฐานใน ISO / IEC 14882: 2014 (และรุ่นก่อนหน้าเช่น ISO / IEC 14882: 2011)
STL ถูกใช้อย่างกว้างขวางในฐานะห้องสมุดสำหรับ C ++ ทำให้โปรแกรมเมอร์สามารถเข้าถึงคอนเทนเนอร์, ตัววนซ้ำและอัลกอริทึมได้ เมื่อมาตรฐานที่เกิดขึ้นคณะกรรมการภาษาที่ได้รับการออกแบบชิ้นส่วนของ ++ ห้องสมุด C มาตรฐาน (ซึ่งเป็นส่วนหนึ่งของมาตรฐานภาษา) จะมากตรงกับ STL
ในช่วงหลายปีที่ผ่านมาหลายคนรวมถึงผู้แต่งหนังสือที่โดดเด่นและเว็บไซต์ต่าง ๆ ยังคงอ้างถึงห้องสมุดมาตรฐาน C ++ ว่า "STL" แม้ว่าข้อเท็จจริงที่ว่าทั้งสองหน่วยงานจะแยกจากกันและมีความแตกต่างกันบ้าง ความแตกต่างเหล่านี้มีความชัดเจนมากยิ่งขึ้นในมาตรฐาน C ++ ใหม่ที่กำลังจะมาถึงซึ่งรวมถึงคุณสมบัติที่หลากหลายและการเปลี่ยนแปลงบางคลาสอย่างมีนัยสำคัญ
ตอนนี้ STL ดั้งเดิมมักจะถูกเรียกว่า "การใช้งานไลบรารีแม่แบบมาตรฐาน C ++" (ย้อนกลับไปสู่ประวัติจริง!) ในลักษณะเดียวกับที่ Microsoft Visual Studio หรือ GCC จัดส่งการใช้งานไลบรารีมาตรฐาน C ++ แต่ "ไลบรารีแม่แบบมาตรฐาน" และ "ห้องสมุดมาตรฐาน" นั้นไม่เหมือนกัน
การต่อสู้นั้นเกี่ยวกับว่าห้องสมุดมาตรฐานปัจจุบันควรจะเรียกว่า "the STL" ทั้งหมดหรือบางส่วนและ / หรือไม่ว่าจะเป็นสิ่งที่เรียกว่า
สำหรับ "STL"
มีโรงเรียนแห่งความคิดที่บอกว่าทุกคนรู้แล้วว่า "STL" หมายถึงห้องสมุดมาตรฐานเช่นเดียวกับที่ทุกคนรู้ว่า "C ++" เป็นภาษาที่ได้มาตรฐาน ISO
นอกจากนี้ยังรวมถึงผู้ที่เชื่อว่ามันจะไม่สำคัญตราบใดที่ทุกฝ่ายเข้าใจสิ่งที่กำลังพูดถึง
มันเป็นคำที่สร้างความแพร่หลายมากขึ้นโดยธรรมชาติของสัตว์ร้ายซึ่งส่วนใหญ่ใช้คุณลักษณะ C ++ อย่างหนักที่รู้จักกันในชื่อ "เทมเพลต"
สำหรับ "ไลบรารีมาตรฐาน C ++" (หรือ stdlib)
อย่างไรก็ตามมีโรงเรียนแห่งความคิดอีกแห่งหนึ่งซึ่งฉันสมัครไว้ซึ่งบอกว่าเรื่องนี้ทำให้เกิดความสับสน ผู้ที่เรียน C ++ เป็นครั้งแรกไม่ทราบถึงความแตกต่างนี้และอาจไม่สังเกตเห็นความแตกต่างของภาษาเล็กน้อย
ผู้เขียนบทความนั้นพบเจอหลายครั้งที่คนที่เชื่อว่าทั้ง C ++ Standard Library นั้นเป็น STL รวมถึงฟีเจอร์ที่ไม่เคยเป็นส่วนหนึ่งของ STL แกนนำเสียงส่วนใหญ่ของ "STL" ตรงกันข้ามรู้ว่าพวกเขาหมายถึงอะไรและปฏิเสธที่จะเชื่อว่าไม่ใช่ทุกคน "ได้รับ" เห็นได้ชัดว่าการใช้คำไม่สม่ำเสมอ
นอกจากนี้ยังมีไลบรารี่ที่คล้ายกับ STL บางส่วนที่ใช้งานจริงของ STL ดั้งเดิมไม่ใช่ C ++ Standard Library จนกระทั่งเมื่อไม่นานมานี้STLPortเป็นหนึ่งในนั้น (และแม้แต่ที่นั่นความสับสนก็ยังมีอยู่มากมาย!)
นอกจากนี้มาตรฐาน C ++ ไม่มีข้อความ "STL" ที่ใดก็ได้และบางคนมักใช้วลีเช่น "STL รวมอยู่ใน C ++ Standard Library" ซึ่งไม่ถูกต้องธรรมดา
ฉันเชื่อว่าการเผยแพร่การใช้คำอย่างต่อเนื่องในลักษณะนี้จะนำไปสู่ความเข้าใจผิดที่เกิดขึ้นตลอดไป อนิจจามันอาจเป็นผลดีต่อการพยายามเปลี่ยนสิ่งต่าง ๆ แม้ว่ามันควรจะดีกว่าก็ตาม เราอาจติดอยู่กับความหมายสองเท่าตลอดกาล
ข้อสรุป
ฉันขอขอบคุณที่โพสต์นี้มีอคติเล็กน้อย: ฉันเขียนบทความที่คุณเชื่อมโยง :) อย่างไรก็ตามฉันหวังว่านี่จะช่วยอธิบายการต่อสู้ได้ดีขึ้น
อัปเดต 13/4/2554
ต่อไปนี้เป็นสาม ตัวอย่างที่สมบูรณ์แบบ ของคนที่ใช้ "STL" เพื่ออ้างถึงไลบรารีมาตรฐาน C ++ ทั้งหมด มันทำให้ฉันงุนงงจนคนจำนวนมากสาบานตาบอดว่าไม่มีใครทำเช่นนี้เมื่อมันเห็นเป็นประจำทุกวัน