第一周學習內容報告
一.標準C++ string類
1.啥叫string函式?
string類是由頭檔案< string >支持的(注意,頭檔案< string.h >和< cstring >
支持對C風格字串進行操縱的C庫字串函式,但不支持string類),
string類包含大量的方法,其中包括了若干建構式、用于將字串賦給變數、合并字串、比較字串和訪問各個元素的多載運算子以及用于在字串中查找字符和子字串的工具等,總之,string類包含的內容很多,
2.建構式
3.String類輸入
4.String函式
二.C++STL模板類vector list
1.什么是vector list?
Vector是動態陣列,能夠在末尾快速的插入與洗掉,可以直接訪問任意元素,
List是資料結構的雙向鏈表,它的記憶體空間可以不連續,通過指標來進行資料的訪問,它可以高效的地在任意地方洗掉和插入
具體內容以代碼的形式體現
#include<iostream>
#include<string>
using namespace std;
int main()
{
//構造名為str的空字串
string str;
cout<<str<<endl;//檢測為空
//為字串賦值
string str1("i like");
cout<<str1<<endl;
//在字串后面添加字串 or s=str1+str2 字串相加
str1=str1+" Baekhyun";
cout<<str1<<endl;
//將字串str2初始化為str1,相當于復制
string str2(str1);
cout<<str2<<endl;
//復制C風格字串
char a[] = "Taeyeon is beautiful!";
string s(a,21);
cout<<s<<endl;
//將字串初始化為由10個A組成的字串
string str3(10,'A');
cout<<str3<<endl;
//訪問字串前四個元素
string str4("Baekhyun is singer",4);
string str5("Baekhyun is singer",9,9);//訪問從第五個開始往后的6個元素
cout<<str4<<" "<<str5<<endl;
//多載[]運算子
string str6("Baekhyun is singer");
cout<<str6[0]<<str6[1]<<str6[2]<<str6[3]<<endl;
//a.empty判斷字串是否為空,是回傳1,否回傳0
string str7,str8;
cout<<str7.empty()<<endl;
str8="hello world!";
cout<<str8.empty()<<endl;
}
運行結果為:
#include<iostream>
#include<string>
using namespace std;
int main()
{
//length()求字串長度,size()求字符個數
cout<<"求串的長度和大小:\n";
string s("Do you like Baekhyun!!!!");
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<"\n";
//capasity()求容量,回傳當前分配給字串的記憶體塊的大小
cout<<"求字串的容量:\n";
cout<<s.capacity()<<endl;
cout<<"\n";
// reserve()讓操作者能夠請求記憶體塊的最小長度,也就是將容量變大,但不能變小
cout<<"擴充字串的容量:\n";
s.reserve(50);
cout<<s.capacity()<<endl;
cout<<"\n";
//resize()修改字符大小,注意*字符大小*,不改變容量大小
cout<<"修改容量:\n";
s.resize(20);
cout<<s.capacity()<<endl;
cout<<s.length()<<endl;
cout<<s.size()<<endl;
cout<<s<<endl;
cout<<"\n";
cout<<"輸出/修改單個字符:\n";
cout<<s.at(1)<<endl;
s.at(1)='O';
cout<<s.c_str()<<endl;
cout<<"\n";
//c_str全輸出
cout<<"全輸出:\n";
string s1="Yes!!!";
cout<<s1.c_str();
cout<<"\n";
//insret()插入函式 0是起始位置下標,“ Answer ”是插入內容
cout<<"任意位置插入:\n";
s1.insert(0," Anawer: ");
cout<<s1<<endl;
cout<<"\n";
//append()在字串末尾插入
cout<<"末尾插入:\n";
s.append(s1);
cout<<s<<endl;
cout<<"\n";
cout<<"指定輸出字串的那些:\n";
string s2;
s2.assign("Yes or Yes",4);
cout<<s2<<endl;
cout<<"\n";
//compare()若str1>str2,回傳1,相等回傳0,小于回傳-1
cout<<"比較函式:\n";
string str1="Taeyeon";
string str2="Baekhyun";
cout<<str1.compare(str2)<<endl;
cout<<"\n";
cout<<"復制函式:\n";
char a[10]={0};
str1.copy(a,3,0);//把str1復制給a 3是復制個數,0是下標
cout<<a<<endl;
cout<<"\n";
//回傳*字串第一個元素*的下標,沒有找到回傳-1
cout<<"查找函式:\n";
cout<<(int)s.find("Yes")<<endl;
cout<<(int)s.find(s1,2)<<endl;
cout<<"\n";
//回傳*第一個被找到元素*下標,沒有找到回傳-1
cout<<"查找字符:\n";
cout<<(int)s.find('u')<<endl;
cout<<"\n";
//回傳*字串*
cout<<"回傳子串:\n";
cout<<s.substr(29,30);
cout<<"\n";
//erase()洗掉函式,replace替代函式
cout<<"洗掉部分子串:\n";
s.erase(18,8);
cout<<s<<endl;
cout<<"\n";
cout<<"最終結果為:\n";
s.replace(0,2,"To");
cout<<s<<endl;
}
運行結果為:

vector定義
#include<iostream>
#include<vector>
using namespace std;
struct point{
int x,y;
};
int main()
{
vector< int >a;//默認初始化,a為空
vector< int >b(a);//用a定義b
vector< int >a(100);//a有100個值為0的元素
vector< int >a(100,6);//a有100個值為6的元素
vector< string >a(10,"null");//10個值為null的元素;
vector< string >vec(10,"hello");//10個值為hello的元素
vector< string >b(a.begin(),a.end());//b是a的復制
vector<int>a[5];//二維陣列 是動態的
vector< point >a;//a用來存坐標
}
#include<bits/stdc++.h>
#include<vector>
using namespace std;
int main()
{
vector<int>a;
a.push_back(456);//push_back()在尾部添加元素
a.push_back(457);
a.push_back(320);
cout<<"判斷字串是否為空:";
bool isEmpty=a.empty();
cout<<isEmpty<<endl;
cout<<"列印字串的第一個元素:";
cout<<a[0]<<endl;
// a.insert(a.begin()+i,k),i表示下標,中間插入:在第i+1個元素前面插入k
cout<<"從字串中間插入:";
a.insert(a.begin()+1,520);
cout<<"在第2個元素前插入520,輸出四個元素:";
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;
cout<<"在字串的尾部插入10個5"<<endl;
a.insert(a.end(),10,5);
cout<<a[3]<<" "<<a[4]<<" "<<a[5]<<endl;
//a.erase(a.begin()+i,a.begin()+j),(i,j都是下標)洗掉的是第i+1到第j個元素
cout<<"洗掉區間[0,1]的元素(即第一二個元素)后前兩個元素為:";
a.erase(a.begin()+0,a.begin()+2);
cout<<a[0]<<" "<<a[1]<<endl;
//排序:從小到大排(基于快排) 5是下標
cout<<"將字串的前5個元素排序:";
sort(a.begin(),a.begin()+5);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<endl;
cout<<"將字串的前五個元素翻轉:";
reverse(a.begin(),a.begin()+5);
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<" "<<a[4]<<endl;
cout<<"清空陣列,大小變為:";
a.clear();
cout<<a.size();
}
運行結果為:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250222.html
標籤:其他
上一篇:牛頓法、擬牛頓法
下一篇:I/O埠的簡單應用
