標準庫類型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

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

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

相關文章

React 是怎樣煉成的

本文主要講述 React 的誕生過程和優化思路。 內容整理自 2014 年的 OSCON - React Architecture by vjeux&#xff0c;雖然從今天&#xff08;2018&#xff09;來看可能會有點歷史感&#xff0c;但仍然值得學習了解。以史為鑒&#xff0c;從中也可以管窺 Facebook 優秀的工程管…

HOJ 1640 Mobile Phone

題意&#xff1a;有一個n*n的矩陣&#xff0c;op1時&#xff0c;在(x,y)增加值z&#xff0c;op2時&#xff0c;求以(x1,y1)和(x2,y2)構成的矩陣的和。 思路&#xff1a;二維線段樹。 代碼&#xff1a; 1 #include<stdio.h>2 #include<string.h>3 const int N1111;4…

vxWorks多任務編程初探-上

進程&#xff08;Process&#xff09;是具有一定獨立功能的程序關于某個數據集合上的一次運行活動&#xff0c;是系統進行資源分配和調度的一個獨立單位。程序只是一組指令的有序集合&#xff0c;它本身沒有任何運行的含義&#xff0c;只是一個靜態實體。而進程則不同&#xff…

【pyqt5學習】——重寫窗口右上角關閉事件closeEvent()

目錄 1、法一&#xff1a;設置中文按鈕 2、法二&#xff1a;不設置中文按鈕 pyqt5 關閉按鈕顯示提示信息_Marvin_Xavier的博客-CSDN博客_pyqt 關閉按鈕https://blog.csdn.net/marwenx/article/details/107226531 1、法一&#xff1a;設置中文按鈕 def closeEvent(self, even…

感動要哭 擼了一個半小時的重載預算符高精

擼了一個半小時代碼&#xff0c;沒玩守望&#xff08;垃圾游戲毀我青春五個金牌都帶不起隊友&#xff09;最后編譯出312個錯誤。嚇我&#xff0c;然而改了幾個地方就直接過了直接過了直接過了&#xff0c;目前還是不明白ostream&#xff0c;istream的用處&#xff0c;上網才搞定…

LVDS DP等顯示器接口簡介

LVDS 產品傳輸速率從幾百Mbps到2Gbps。它是電流驅動的&#xff0c;他通過在接收端放置一個負載而得到的電壓&#xff0c;當電流正向流動&#xff0c;接收端輸出為1&#xff0c;反之為0&#xff0c;它的擺幅250mV-450mV. lvds 即低壓差分信號傳輸&#xff0c;是一種滿足高性能傳…

http協議相關內容

二、HTTP協議1、協議&#xff1a;共同遵守的規則。2、網絡協議有&#xff1a;TCP&#xff08;有三次握手機制&#xff09;/IP&#xff1a;傳輸控制協議/地址協議&#xff0c;SMTP&#xff1a;簡單郵件傳輸協議&#xff0c;FTP&#xff1a;文件傳輸協議&#xff0c;http&#xf…

使用XmlTextReader 讀取XML

XmlTextReader 限于只向前的讀取 XmlTextReader 的技術類似于讀取其他任何文件 首先打開文件&#xff0c;然后從文件中讀取信息,最后關閉文件. 每次從文件中讀取信息時&#xff0c;他在文件中的位置都會前移.到達文件結尾的時候就什么都不讀了。 1 創建XmlTextReader對象 …

C#中ComboBox動態綁定賦值

http://www.crifan.com/csharp_combobox_data_dynamic_binding/ C#中&#xff0c;已有一個List&#xff0c;想要動態的&#xff0c;綁定到ComboBox中。 【解決過程】 1.參考&#xff1a; c# winform comboBox動態綁定數據 去試試代碼&#xff1a; cmbSubCategory.DataSource g…

【pyqt5學習】——日歷控件calendarWidget設置單元格格式(前景、背景)、日歷控件屬性編輯

目錄 0、導入庫 1、返回日歷選中的日期 2、更改日歷控件周幾&#xff08;比如一個月屬于周一的日期&#xff09;的所有格子屬性 3、更改日歷控件單個格子&#xff08;指定日期&#xff09;屬性 4、日歷格子屬性 5、信號——clicked() 6、成果展示 0、導入庫 from PyQt5.Q…

linux內核數據結構之鏈表

1、前言 最近寫代碼需用到鏈表結構&#xff0c;正好公共庫有關于鏈表的。第一眼看時&#xff0c;覺得有點新鮮&#xff0c;和我之前見到的鏈表結構不一樣&#xff0c;只有前驅和后繼指針&#xff0c;而沒有數據域。后來看代碼注釋發現該代碼來自linux內核&#xff0c;在linux源…

為什么使用 XML

為什么使用 XML&#xff1f; Web 使我們能夠與任何地方的任何人通訊。廣泛接受的標準&#xff08;這對完全使用 Web 的潛力是至關重要的&#xff09;允許 Web 在多種交互操作的技術層上通訊。一個重要層是可視化顯示和用戶界面&#xff0c;例如 HTML、GIF 和 JScript(TM) 之類的…

bzoj1084: [SCOI2005]最大子矩陣

dp。轉移方程在代碼里。。轉載于:https://www.cnblogs.com/invoid/p/5451202.html

ci事務

參考鏈接:http://www.tuicool.com/articles/jqeuU3轉載于:https://www.cnblogs.com/norm/p/6382396.html

【bug修復】you must feed a value for placeholder tensor ‘Placeholder‘ with dtype float解決方案

最近碰到了這個you must feed a value for placeholder tensor Placeholder with dtype float and shape的問題&#xff0c;字面意思很好理解&#xff0c;就是沒有給Placeholder賦值&#xff0c;可是我明明賦值了&#xff0c;百度了許多&#xff0c;也都是讓我檢查是否賦值以及…

動態代理3之代理工廠實現

動態代理的深化&#xff1a;承接動態代理2( 對 上級實例進行 深化)&#xff0c;也就是 spring 的前身 &#xff08;必須掌握&#xff09;實例&#xff1a; 文件說明&#xff1a;1.有一個Waiter接口&#xff0c;該接口有一個 server() 、ShouQian()方法 2.有一個 Waiter接口的實…

一個簡單的XML文檔例子

一個簡單的XML文檔例子: <?xml version"1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Dont forget me this weekend!</body> </note> 文檔的第一…

python set

python的set和其他語言類似, 是一個無序不重復元素集, 基本功能包括關系測試和消除重復元素. 集合對象還支持union(聯合), intersection(交), difference(差)和sysmmetric difference(對稱差集)等數學運算. sets 支持 x in set, len(set),和 for x in set。作為一個無序的集…

【bug修復】解決ValueError: Tensor(“Variable:0“ dtype=float32_ref) must be from the same graph as Tensor(“R

bug:描述 在進行tensorflow進行搭建CNN網絡時&#xff0c;在定義CNN的py文件中調用cnn模型&#xff0c;運行正常&#xff0c;但是在其他py文件中進行時就出現問題 ValueError: Tensor(“Variable:0” dtypefloat32_ref) must be from the same graph as Tensor(“Reshape:0”,…

XML —— DTD介紹

一、DTD介紹 Document Type Definition&#xff1b; DTD是一種XML的約束方式&#xff0c;除了此種約束方式外&#xff0c;還有XSchema&#xff0c;XSchema比DTD的約束能力還要強&#xff0c;因此DTD正在逐漸淘汰&#xff1b; DTD的目的就是約束XML標簽的寫法&#xff1b;比如在…