STL容器学习(一)
一:STL分类
1.容器(container)—系统封装的数据结构。其中每一种结构都能装任意类型。
2.算法(algorithm)—类似于一个大的函数库,里面有系统写好的函数像交换、替换、查找等;每个算法可以使用多个容器,sort可以对数组、链表排序。
3.迭代器—算法和容器之间的连接器
二:容器分类
string
vector
array
deque
list
forward_list
hash_map
1.string
头文件 <string>
#include<string> using namespace std; int main() { string str; system("pause"); return 0; }
string是专门的字符串操作的一个类
string字符串指定元素的修改
替换
[1].下标运算
#include<iostream> #include<string> using namespace std; int main() { string str("abc"); str[2]='d'; cout<<str<<endl; return 0; }
[2].通过 .at()
#include<iostream> #include<string> using namespace std; int main() { string str("abc"); str[2]='d'; str.at(0)='s'; cout<<str<<endl; return 0; }
插入
[1].中间插入 函数 insert()
#include<iostream> #include<string> using namespace std; int main() { string str1("abc"); string str2(3,'d');//三个d str1.insert(1,str2);//在b前插入三个d cout<<str1<<endl; return 0; }
basic_string&insert(size_type index,const basic_string&str) index位置(前)插入str
basic_string&insert(size_type index,const char *str) index位置插入一个字符串
#include<iostream> #include<string> using namespace std; int main() { string str1("abc"); char *str2="sss"; str1.insert(2,str2); cout<<str1<<endl; return 0; }
basic_string&insert(size_type index,const char *str,size_type num) 插入前几个
basic_string&insert(size_type index,size_type num char ch) 插入num个ch
[2]尾巴插入 append()
basic_string&append(const basic_string&str) 在尾巴通过一个对象拼接
#include<iostream> #include<string> using namespace std; int main() { string str1("abc"); string str2("sss"); str1.append(str2); cout<<str1<<endl; return 0; }
basic_string&append(const char *str)
basic_string&append(const basic_string&str,size_type index,size_type len)
#include<iostream> #include<string> using namespace std; int main() { string str1("abc"); string str2("def"); str1.append(str2,1,2); cout<<str1<<endl; return 0; }

basic_string&append(const char *str,size_type num) 拼接字符串前几个
basic_string&append(size_type num,char ch) 拼接num个ch
赋值 assign()
basic_string&assign(const basic_string&str)
#include<iostream> #include<string> using namespace std; int main() { string str1("abc"); string str2("edf"); str1.assign(str2); cout<<str1<<endl; return 0; }

basic_string&append(const char *str) 以字符串赋值
basic_string&append(const basic_string&str,size_type index,size_type len) 中间几个赋值
basic_string&append(const char *str,size_type num) 字符串前一个赋值
basic_string&append(size_type num,char ch) num个ch赋值
删除 erase()
basic_string&append(size_type index=0,size_type num=nops) 删除指定位置指定个数
#include<iostream> #include<string> using namespace std; int main() { string str1("abcefg"); //str1.erase(2,3); //从下标为2的删除三个字符 str1.erase(0,str1.length()); //全部清空 cout<<str1<<endl; return 0; }
比较 compare()//a>b==1,a==b==0,a<b==-1
假就返回0,真就返回1
一个一个比较,有一个不等就结束
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1("abcaefg");
string str2("abcdefgh");
//cout<<str1.compare(str2)<<endl;
//cout<<(str1<str2)<<endl;
//cout<<str1.compare(1,2,str2)<<endl;
//str1中下标为1,2的字符串和str2比较
cout<<str1.compare(1,2,str2,2,3)<<endl;// str1中下标为1,2的字符串和str2下标为2,3的字符串比较
return 0;
}
复制 copy()
size_type copy(char *str,size_type num,size_type index) 将对象的某一段复制进一个字符数组中
#include<iostream> #include<string> using namespace std; int main() { string str1("abcaefg"); char arr[16]={0}; str1.copy(arr,3,4);//将str1中下标为4的字符开始复制3个到arr cout<<arr<<endl; return 0; }
2 vector
向量(动态数组)
头文件 #include<vector>
using namespace std;
定义向量对象 vecyor<int> vec;
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<int> vec1(5,12);
vector<int> vec2(5,'a');
for(int i=0;i<5;i++)
{
cout<<vec1[i]<<"\n"<<vec2[i]<<"\n";
}
return 0;
}
#include<iostream> #include<string> #include<vector> using namespace std; int main() { vector<int> vec1(5,12); vector<char> vec2(5,'a'); for(int i=0;i<5;i++) { cout<<vec1[i]<<"\n"<<vec2[i]<<"\n"; } return 0; }
浙公网安备 33010602011771号