日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

标准库类型String,Vector

發布時間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 标准库类型String,Vector 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

string對象中每個字符的處理:

要用到 for(聲明:表達式) 語句

比如簡單的打印string str中每一個字符

---

string str("hello world!!!");

for(auto c: str)cout<<c<<endl;??

(ps:這里auto 的意思是讓編譯器自己來決定c變量的類型)

---

再舉一個例子統計string str的標點符號數目

string str("hello world!!!");

decltype(str.szie()) num_cnt = 0;

for(auto c : s)

? if(ispunct(c)) ++num_cnt;

cout<<num_cnt<<" punctuation characters in "<<s<<endl;

(ps:這里decltype(str.size()) 是代表的str.size()聲明類型,而str.size()的類型不是整型,而是一個無符號的其他類型。

然后使用 ispunct(char c)是包含在頭文件cctype里面的。cctype 頭文件里面有許多 isalnum判斷是否數字,isalpha判斷是否字母..etc)

----

?那假如希望改變string str的字符呢?而不是僅僅進行統計和輸出

這個例子是將str的全部變成大寫字母!

string str("hello world!!!");

for(auto &c : str) c=toupper(c)

cout<<str<<endl;

(ps:?這里有個小變化for(auto c:str) 變成 for(auto &c:str)!?原來str?的每個字符 是復制給 auto c。所以即使你改變了auto c

也并沒有改變str的每個字符!但是auto &c 沒有,這里c是代表str?每個字符的引用而非副本。也就是c 是每個字符的另一個別名而已!

所以改變c 確實能夠改變str 的字符!)

---

假如希望處理訪問str 中某個特定的字符

-

下標:使用str[x] x是無符號數且小于等于size-1!

使用一個例子來介紹: 一個將十進制轉成16進制的程序

?

const string hexdigits="0123456789ABCDEF";

string result;

string::size_type n;

cout<<"enter a series of numbers between 0 and 15 seperately with space"<<endl;

while(cin>>n)

?if(n<hexdigits.size())

??? result+=hexdigits[n];

cout<<result;

-

迭代器:迭代器有點像指針,但又很有區別。在標準類型中從string 到 vector 都支持用迭代器訪問容器中的一個元素。

并且許多其他的標準庫定義的容器也支持:使用迭代器訪問容器中的一個元素!

(只有極少數的才支持用下標法來訪問容器里元素)

舉個例子:將string容器(或者稱string 對象)的第一個元素轉變成大寫

string str(hello,you bitch!);

if(s.begin() != s.end()){ auto it=s.begin(); *it=toupper(*it) ;}

it 是迭代器, 它指向s容器的第一個元素。它的類型我們不得而知所以命名它auto

*it 是s容器第一個元素的引用(別名)!

(

s.end()指向s容器尾元素下一個位置

s.begin()指向容器的第一個位置, s.begin==s.end時相當于s容器為空!

it++ 說明指向s容器的下一個元素

?it-- 說明指向上一個元素

?it->property 說明是元素的某一個屬性,相當于(*it).property

)

-除了auto c=s.begin() 如何聲明一個迭代器呢?

vector<int>::iterator i1;

string::iterator i2; 能讀,修改 string容器的元素

vector<int>::const_iterator I1;

string::const_iterator I2; 僅僅能讀string容器的元素

?

標準庫類型Vector:

想用vector 先要 #include<vector> using std::vector

Vector如何初始化?

Vector支持三種初始化方法。

一種是用花括號的列表初始化? vector<int> v1{1,2,3}; 說明v1容器里有三個元素,分別是1,2,3

一種是用括號的元素數目初始化 vector<string> v1(10,"hi"); vector<string> v2(10);說明v1有10個hi的string串,v2有10個空串

一種是拷貝初始化 vector<string>v1=v2,vector<string>v1(v2)。vector<int> v0 v0是空容器!

?

Vector支持什么操作呢?

最重要Vector支持操作是向Vector添加元素!

vector<int> v2; //此時是一個空的v2容器

for(int i=0;i!=100;i++) v2.push_back(i);

還有其他操作:

v.empty()?判斷空

v.size() 判斷大小

v.push_back(t)添加元素t如容器V

v[n]返回容器v的第n個位置引用

v=v1,v={a,b,c..} 都是用右邊的容器替換左邊的v容器

v==v1,v!=v1,v>= > < <=v1?數目相等且每一個元素相等即==,容器之間第一對相異的元素決定容器大小關系!

?

轉載于:https://www.cnblogs.com/zzzPark/p/6377708.html

總結

以上是生活随笔為你收集整理的标准库类型String,Vector的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。