C++初階-STL簡介

目錄

?

1.什么是STL

2.STL的版本

3.STL的六大組件

4.STL的重要性

4.1在筆試中

4.2在面試中

4.3.在公司中

5.如何學習STL

6.總結和之后的規劃



1.什么是STL

STL(standard template library-標準模板庫);是C++標準庫的重要組成部分,不僅是一個可復用的組件庫,而且是一個包羅數據結構與算法的軟件框架。

用簡單易懂的話來說就是用模板實現數據結構和算法的庫,我們在之前講了順序表、鏈表、二叉樹等數據結構,這個庫里面都包含,所以我們現在用STL就可以不用自己寫數據結構和算法了,這樣簡化了我們的時間。

2.STL的版本

原始版本
Alexander Stepanov、Meng Lee 在惠普實驗室完成的原始版本,本著開源精神,他們聲明允許
任何人任意運用、拷貝、修改、傳播、商業使用這些代碼,無需付費。唯一的條件就是也需要向原
始版本一樣做開源使用。 HP 版本--所有STL實現版本的始祖。不是C++始祖(始祖你猜,之后面試可能要考,如果不知道了就去找吧(doge))開發的。

首先我們需要了解一下開源和閉源,開源即開放源代碼,這是一個很好的精神,免費的使用,但是這個版本規定如果你做了有效的修改你也需要進行開源,公布自己改變的地方!而閉源就不一樣了,不能修改。開源和閉源都有各自的好處,開源雖然看似很好,但是可維護性不強,之后沒有多少人會去維護的,但是閉源就有人來維護了。


P. J. 版本
由P. J. Plauger開發,繼承自HP版本,被Windows Visual C++采用,不能公開或修改,缺陷:可讀性比較低,符號命名比較怪異。


RW版本
由Rouge Wage公司開發,繼承自HP版本,被C+ + Builder 采用,不能公開或修改,可讀性一
般。


SGI版本
由Silicon Graphics Computer Systems,Inc公司開發,繼承自HP版本。被GCC(Linux)采用,可
移植性好,可公開、修改甚至販賣,從命名風格和編程 風格上看,閱讀性非常高。我們后面學習
STL要閱讀部分源代碼,主要參考的就是這個版本。

我們常用的git/Liunx都是開源的,而Windows、mac、os都是閉源的。

3.STL的六大組件

空間適配器里面的allocator就是內存池,其中我們主要注意的是算法和容器(現階段),因為容器涉及到數據結構的知識等等,而算法就涉及到我們之前的排序等等算法,總之注意的就是這幾個。

4.STL的重要性

4.1在筆試中

(1)二叉樹的層序打印

題目鏈接:把二叉樹打印成多行_牛客題霸_牛客網

這些題目我們現在是不會做的(雖然之前寫過),但是之后學完STL就會了。

(2)重建二叉樹

題目鏈接:重建二叉樹_牛客題霸_牛客網

(3)用兩個棧實現一個隊列

題目鏈接:用兩個棧實現隊列_牛客題霸_牛客網

這些之前我們基本上寫過,但是都要把數據結構的基本上所有代碼都拷貝過去很麻煩,但是現在我們學了C++中的STL后就會好一些了。

4.2在面試中

這里只提供一些面試中的題目,只要知道基本上是什么樣就可以了。

4.3.在公司中

網上有句話說:“不懂STL,不要說你會C++”。STL是C++中的優秀作品,有了它的陪伴,許多底層
的數據結構以及算法都不需要自己重新造輪子,站在前人的肩膀上,健步如飛的快速開發。

5.如何學習STL

學STL有三個境界:

第一境界:熟用STL;

第二境界:了解泛型技術的內涵與STL的學理乃至實作;

第三境界:擴充STL。

三個境界的總結就是:能用,明理,能擴展 。我們主要學到第二個境界就可以了,只要前兩個境界學得好,第三個境界就沒有問題。

為什么我們要擴充STL呢?

有些數據結構和算法在STL中未實現,所以需要擴充。

相當于爬->走->跑。

所以加油吧。

6.總結和之后的規劃

STL在我們C++的學習至關重要,所以之后也就需要每一篇博客要聽懂,但是更多的是自己能用,而不是簡單的看,只能說C++本來是很難的,必須用實際的代碼去學C++,和我之前自己寫的日期管理系統一樣,雖然有些不足,但是也要寫出一些成果就可以了!

之后我將從容器的string和vector開始,但是后面又會加一些內容才講模板進階,而那些stack和queue的擴展內容可能需要之后再講,到時候我會發起一項投票,因為到時候我可能需要學Liunx或者先把C++基本內容學完,所以需要講C++擴展內容還是Liunx都需要額外的理解的,所以到時候再進行簡單的投票吧!反正不會完全按照我的文件中的順序來進行講解,所以到時候還需要繞一些額外的知識(這些知識還沒學,我也不懂)。

下節將講解string了,這個string我們主要是學它的成員函數等等,需要進入這個網頁:

https://legacy.cplusplus.com/reference/

建議先去學習一下這個文檔的使用吧,之后會頻繁用到的。

這講不是來講解知識的,這講是為了后面的內容做鋪墊的,關于string的內容,我可能需要兩篇博客來進行講解,因為它里面雖然在界面的函數少,但是幾乎每一個成員函數都有重載函數,因為它比STL誕生得早,所以封裝的函數太多了,但是不是每個函數都要掌握,主要知道一些重要函數的用法就可以了(具體下一節再講)。string部分需要到4月30日前后才可以更新了哦。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/78996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78996.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/78996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kivy android打包buildozer.spec GUI配置

這個適合剛剛學習kivyd的道友使用,后面看情況更新 代碼 import tkinter as tk from tkinter import ttk, filedialog, messagebox, simpledialog import configparser import os import json # 新增導入class BuildozerConfigTool:def __init__(self, master):se…

MOOS-ivp使用(一)——水下機器人系統的入門與使用

MOOS-ivp使用(一)——水下機器人系統的入門與使用 MOOS-ivp(Marine Operational Oceanographic System for Intelligent Vehicle Planning)是專為水下機器人(如AUV)設計的開源框架。類似于ROS,…

電子病歷高質量語料庫構建方法與架構項目(智能質控體系建設篇)

引言 隨著人工智能技術的迅猛發展,醫療信息化建設正經歷著前所未有的變革。電子病歷作為醫療機構的核心數據資產,其質量直接關系到臨床決策的準確性和醫療安全。傳統的病歷質控工作主要依賴人工審核,存在效率低下、主觀性強、覆蓋面有限等問題。近年來,基于人工智能技術的…

react學習筆記4——React UI組件庫與redux

流行的開源React UI組件庫 material-ui(國外) 官網: http://www.material-ui.com/#/github: GitHub - mui/material-ui: Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. ant-design(國內螞蟻金服) 官網: Ant…

GPU集群搭建

1. 硬件規劃與采購 GPU 服務器:挑選契合需求的 GPU 服務器,像 NVIDIA DGX 系列就不錯,它集成了多個高性能 GPU。網絡設備:高速網絡設備不可或缺,例如萬兆以太網交換機或者 InfiniBand 交換機,以此保證節點…

ZYNQ 純PL端邏輯資源程序固化流程

ZYNQ 純PL端邏輯資源程序固化 ZYNQ的程序固化流程比傳統的FPGA固化流程復雜很多,Vivado生成的bit文件無法直接固化在ZYNQ芯片中。因為ZYNQ 非易失性存儲器的引腳(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的專用引腳。這些非易失性存儲器由 PS …

[計算機科學#6]:從鎖存器到內存,計算機存儲的構建與原理

【核知坊】:釋放青春想象,碼動全新視野。 我們希望使用精簡的信息傳達知識的骨架,啟發創造者開啟創造之路!!! 內容摘要:在上一篇文章中,我們深入了解了計算機如…

如何刪除Google Chrome中的所有歷史記錄【一鍵清除】

谷歌瀏覽器記錄了用戶訪問過的網站。這方便了查找,但有時也需要清理。刪除所有歷史記錄很簡單,只要按照以下步驟操作。 1. 打開谷歌瀏覽器 首先要啟動谷歌瀏覽器。點擊右上角的三個點,進入主菜單。 2. 進入歷史記錄界面 在菜單中找到“歷史…

關于瀏覽器對于HTML實體編碼,urlencode,Unicode解析

目錄 HTML實體編碼 URL編碼 Unicode編碼 解析層次邏輯 為什么<script></script>不可以編碼符號 為什么不能編碼JavaScript:協議 為什么RCDATA標簽中的都會被解析成文本 為什么HTML編碼了<>無法執行 HTML實體編碼 通過特殊語法&#xff08;<、>…

【數據分享】2020年中國高精度森林覆蓋數據集(免費獲取)

森林作為全球陸地生態系統的主體&#xff0c;分布面積廣、結構復雜&#xff0c;承擔著調節氣候、維護生態安全、改善環境等方面的重要作用。我國的森林資源豐富&#xff0c;據《中國森林資源報告&#xff1a;2014—2018》統計&#xff0c;我國森林覆蓋率已經達到23.04%。森林覆…

C語言學習之動態內存的管理

學完前面的C語言內容后&#xff0c;我們之前給內存開辟空間的方式是這樣的。 int val20; char arr[10]{0}; 我們發現這個方式有兩個弊端&#xff1a;空間是固定的&#xff1b;同時在聲明的時候必須指定數組的長度&#xff0c;一旦確定了大小就不能調整的。 而實際應用的過程中…

【深度學習-Day 2】圖解線性代數:從標量到張量,理解深度學習的數據表示與運算

Langchain系列文章目錄 01-玩轉LangChain&#xff1a;從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊&#xff1a;四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain&#xff1a;從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

首頁數據展示

排版 現在做首頁的排版&#xff0c;依舊是偷antd里面的東西 使用card包裹list的樣式 import React from react import axios import { Card, Col, Row, List } from antd import { EditOutlined, EllipsisOutlined, SettingOutlined } from ant-design/icons; import { Avat…

使用Set和Map解題思路

前言 Set和Map這兩種數據結構,在解決一些題上&#xff0c;效率很高。跟大家簡單分享一些題以及如何使用Set和Map去解決這些題目。 題目鏈接 136. 只出現一次的數字 - 力扣&#xff08;LeetCode&#xff09; 138. 隨機鏈表的復制 - 力扣&#xff08;LeetCode&#xff09; 舊…

嘗試leaflet+webassemly

前言 筆者在github發現rust版本的leaflet&#xff0c;發現是用wasm-bindgen包裝的&#xff0c;嘗試使用一下 Issues slowtec/leaflet-rshttps://github.com/slowtec/leaflet-rs 正文 準備 新建一個react項目&#xff0c;安裝rsw依賴 pnpm i -D vite-plugin-rsw cargo ins…

機器學習實戰,天貓雙十一銷量與中國人壽保費預測,使用多項式回歸,梯度下降,EDA數據探索,彈性網絡等技術

前言 很多同學學機器學習時總感覺&#xff1a;“公式推導我會&#xff0c;代碼也能看懂&#xff0c;但自己從頭做項目就懵”。 這次我們選了兩個小數據集&#xff0c;降低復雜度&#xff0c;帶大家從頭開始進行分析&#xff0c;建模&#xff0c;預測&#xff0c;可視化等&…

SQL數據庫系統全解析:從入門到實踐

一、數據庫世界入門指南 在數字時代&#xff0c;數據就像新時代的石油&#xff0c;而數據庫系統就是儲存和管理這些寶貴資源的倉庫。對于初學者來說&#xff0c;理解數據庫的基本概念是邁入這個領域的第一步。 數據庫本質上是一個有組織的數據集合&#xff0c;它允許我們高效…

【大模型】圖像生成:StyleGAN3:生成對抗網絡的革命性進化

深度解析StyleGAN3&#xff1a;生成對抗網絡的革命性進化 技術演進與架構創新代際技術對比StyleGAN3架構解析 環境配置與快速入門硬件要求安裝步驟預訓練模型下載 實戰全流程解析1. 圖像生成示例2. 自定義數據集訓練3. 潛在空間操作 核心技術深度解析1. 連續信號建模2. 傅里葉特…

PHP-Cookie

Cookie 是什么&#xff1f; cookie 常用于識別用戶。cookie 是一種服務器留在用戶計算機上的小文件。每當同一臺計算機通過瀏覽器請求頁面時&#xff0c;這臺計算機將會發送 cookie。通過 PHP&#xff0c;您能夠創建并取回 cookie 的值。 設置Cookie 在PHP中&#xff0c;你可…

“Everything“工具 是 Windows 上文件名搜索引擎神奇

01 Everything 和其他搜索引擎有何不同 輕量安裝文件。 干凈簡潔的用戶界面。 快速文件索引。 快速搜索。 快速啟動。 最小資源使用。 輕量數據庫。 實時更新。 官網&#xff1a;https://www.voidtools.com/zh-cn/downloads/ 通過網盤分享的文件&#xff1a;Every…