skfjh

 

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;
}

 

posted on 2021-01-17 22:21  skfjh  阅读(57)  评论(0)    收藏  举报

导航