標準C 中string類及STL容器類簡介

2021-05-01 09:12:03 字數 4291 閱讀 3069

標準c++中string類及stl容器類簡介

#include

std::string s1;

std::string s3(s2);

std::string s2("this is a string");

begin 得到指向字串開頭的iterator

end 得到指向字串結尾的iterator

rbegin 得到指向反向字串開頭的iterator

rend 得到指向反向字串結尾的iterator

size 得到字串的大小

length() 和size函式功能相同

max_size 字串可能的最大大小

capacity 在不重新分配記憶體的情況下,字串可能的大小

empty 判斷是否為空

operator 取第幾個元素,相當於陣列

c_str 取得c風格的const char* 字串

data 取得字串內容位址

operator= 賦值操作符

reserve 預留空間

swap 交換函式

insert 插入字元

push_back 追加字元

erase 刪除字串

clear 清空字元容器中所有內容

resize 重新分配空間

assign 和賦值操作符一樣

replace 替代

copy 字串到空間

find 查詢,返回基於0的索引號

rfind 反向查詢

find_first_of 查詢包含子串中的任何字元,返回第乙個位置

find_first_not_of 查詢不包含子串中的任何字元,返回第乙個位置

find_last_of 查詢包含子串中的任何字元,返回最後乙個位置

find_last_not_of 查詢不包含子串中的任何字元,返回最後乙個位置

substr(n1,len) 得到字串從n1開始的長度為len的子串

比較字串(支援所有的關係運算子)

compare 比較字串

operator+ 字串鏈結

operator+= += 操作符

operator== 判斷是否相等

operator!= 判斷是否不等於

operator

從輸入流中讀入字串

operator

getline 從輸入流中讀入一行

二.向量類模板std::vector成員函式:

#include

std::vector name;

std::vector name(size);

std::vector name(size,value);

std::vector name(myvector);

std::vector name(first,last);

assign(first,last) 用迭代器first,last所指定的元素取代向量元素

assign(num,val) 用val的num份副本取代向量元素

at(n) 等價於運算子,返回向量中位置n的元素

front() 返回向量中第乙個元素的引用

back() 返回向量中最後乙個元素的引用

begin() 返回向量中第乙個元素的迭代器

end() 返回向量中最後乙個元素的迭代器

max_size() 返回向量的最大容量(向量所能容納的最多元素個數)

capacity() 返回向量當前所能容納的最多元素個數

clear() 刪除向量中所有元素

empty() 如果向量為空,返回真

erase(start,end) 刪除迭代器start end所指定範圍內的元素

erase(i) 刪除迭代器i所指向的元素

insert(i,x) 把x插入到迭代器i所指定的位置

insert(i,n,x) 把x的n份副本插入到迭代器i所指定的位置

insert(i,start,end) 把迭代器start和end所指定的範圍內的值插入到迭代器i所指定的位置

push_back(x) 把x插入到向量的尾部

pop_back() 刪除向量中最後乙個元素

rbegin() 返回乙個反向迭代器,該迭代器指向的元素越過了向量中的最後乙個元素

rend() 返回乙個反向迭代器,該迭代器指向向量中第乙個元素

reverse() 反轉元素順序

resize(n,x) 把向量的大小改為n,新元素的初值賦為x

size() 返回向量的大小

swap(vectorref) 交換2個向量的內容

三.雙端佇列類模板std::deque成員函式:

#include

std::deque name;

std::deque name(size);

std::deque name(size,value);

std::deque name(mydeque);

std::deque name(first,last);

其成員函式大部分和std::vector相同

ps:push_front(x)把x放到雙向佇列的頭部

pop_front() 把雙向佇列的第乙個元素刪除

四.鍊錶類模板std::list成員函式:

#include

std::list name;

std::list name(size);

std::list name(size,value);

std::list name(mylist);

std::list name(first,last);

其成員函式大部分和std::vector相同

ps:push_front(x)把x放到鍊錶頭部

pop_front() 把鍊錶第乙個元素刪除

merge(listref) 把listref所引用的鍊錶中的所有元素插入到鍊錶中

remove(val) 從鍊錶中刪除所有值為val的元素

remove_if(pred) 刪除鍊錶中謂詞pred為真的元素

(謂詞即為元素儲存和檢索的描述,如std::less,std::greater那麼就按降序/公升序排列,你也可以定義自己的謂詞)

sort() 根據預設的謂詞對鍊錶排序

sort(pred) 根據給定的謂詞對鍊錶排序

unique() 刪除所有重複的元素,使煉表中沒有重複元素

unique(pred) 根據謂詞pred刪除所有重複的元素,使煉表中沒有重複元素

注意:vector和deque支援隨機訪問,而list不支援隨機訪問,因此不支援訪問!

五.容器介面卡堆疊類std::stack成員函式:

#include

stack實現先進後出的操作

std::stack name;

type為堆疊操作的資料型別

container為實現堆疊所用的容器型別,可以為std::vector,std::deque,std::list

例如std::stack intstack;

管理成員函式只有:empty(),size(),top(),push(),pop()

六.容器介面卡佇列類std::queue成員函式:

#include

queue實現先進先出的操作

std::queue name;

type為佇列操作的資料型別

container為實現佇列所用的容器型別,可以為std::vector,std::deque,std::list

管理成員函式只有:empty(),size(),front(),back(),push(),pop()

七.關聯式容器:

集合類std::set,

多重集合類std::multiset,

對映類std::map,

多重對映類std::multimap,

位集合std::bitset

八.通用演算法(對以上stl均適用)

#include

1.非修正序列演算法:

2.修正序列演算法:

3.排序演算法:

4.數值演算法:

九.迭代器(類似指標的功能,對容器的內容進行訪問)

#include

例如:std::vector intvector;

std::vector::iterator first=intvector.begin();

//begin()得到指向vector開頭的iterator,*first得到開頭乙個元素的值

std::vector::iterator last=intvector.end();

//end()得到指向vector結尾的iterator,*last得到最後乙個元素的值

C 標準庫 (string 類)

一 成員函式 二 非成員有關的全域性函式 三 例項 感謝閱讀!其中的string是以char作為模板引數的模板類例項,把字串的記憶體管理責任由string負責而不是由程式設計者負責,大大減輕了c語言風格的字串的麻煩 std basic string提供了大量的字串操作函式,如比較 連線 搜尋 替換 ...

C 標準模板庫(STL介紹) string

string str1 ab str2 xy string str str1 str2 比較規則是字典序 方法一 string str abcxyz str2 opq str.insert 3 str2 輸出 abcopqxyz 方法二 string str abcxyz str2 opq str....

C 標準模板庫(STL)之 string

在c語言中,一般使用字元陣列char str來存放字串,但是使用字元陣列有時會顯得麻煩,c 在stl中加入了string型別,對字串常用的需求功能進行了封裝,使得操作起來更方便,且不易出錯。如果需要使用string 需要新增string標頭檔案,即 include 注 string.h和string...