C++基础-(模板及标准模板库)

C++基础

模板及标准模板库

  • 模板的作用
    • 模板使程序员能够快速的建立具有类型安全得库集合和函数集合,它的实现,方便了大规模的软件开发。
  • 简单的求最大值
#include 
using namespace std;
template 
X Max(X a,X b)
{
    return (a>b?a:b);
}
int main()
{
    int x1=20,x2=100;
    cout<<"max="<(x1,x2)<::size_type ix = 0; ix != ivec.size(); ++ix) 
    {
        cout<::iterator it=v.begin();it::reverse_iterator it=v.rbegin();it
  • vector 与指针
#include 
#include 
using namespace std;
int *p1;               //iterator i1;
const int *p2;         //const_iterator i2;
int *const p3;         //const iterator i3;
const int *const p4;   //const const_iterator i4;
void show(vector vi)
{
    vector::iterator it;
    it=vi.begin();
    while(it!=vi.end())
    {
        cout<<*it++<<' ';
    }   
    cout< vi(3,90);
    show(vi);
    int a[5]={3,4,5,6,7};
    vi.insert(vi.begin(),a,a+5);
    show(vi);
    vi.push_back(100);
    show(vi);
    cout<<"size:"<

List

  • list的使用
    • list的四种构造函数
      1. list L; //构造空容器L
      2. list L(n, elem); //创建一个大小为size的对象L,并使用elem元素进行初始化
      3. list L(list1); //创建容器L,并使用已创建的容器list1进行初始化
      4. list L(begin,end); //创建容器L,并使用(begin,end)之间的元素初始化容器
    • list元素的插入
      1. L.push_back(elem); //向容器的末尾插入元素elem的拷贝
      2. L.push_front(elem); //向容器的开端插入元素elem的拷贝
      3. L.insert(position, elem); //向容器的position位置插入元素elem的拷贝
      4. L.insert(position, n, elem); //向容器的position位置上插入元素elem的n个拷贝
      5. L.insert(position, beg, end); //将迭代器beg至 end-1 指向的内容插入到容器的position位置上
      6. L.splice(position, list); //将链表容器list中的元素插入到position位置上,并且清空list容器
      7. L.splice(position, list, pos); //将容器list中的pos位置上的元素插入到position位置上,并将pos位置上的元素从list中移除
      8. L.splice(position, list, beg, end); //将容器list中beg 至 end-1 位置上的元素插入到position位置上,并将这些元素从list中移除
    • 访问容器元素
      1. List::iterator i;
        使用begin, end 成员函数来操作

      2. List::reverse_iterator ri;
        使用rbegin, rend 成员函数来操作

      3. List::const_iterator ci;
        使用begin, end 成员函数来操作,但是只能访问,不能进行修改

    • 元素的删除
      1. L.pop_back(); //删除容器的最后一个元素
      2. L.pop_front(); //删除容器的第一个元素
      3. L.clear(); //删除容器的所有元素
      4. L.erase(position); //删除容器指定位置的元素
      5. L.erase(beg, end); //删除迭代器beg 至 end-1 之间的元素
      6. L.remove(elem); //移除与元素elem相等的元素
#include 
using namespace std;
#include 
int main()
{
    int cpp[5]={3,6,1,7,5};
    int java[8]={6,4,7,8,15,2,3,9};
    int Unix[4]={5,2,6,9};
    list li;
    li.insert(li.begin(),cpp,cpp+5);
    li.insert(li.begin(),java,java+8);
    li.insert(li.begin(),Unix,Unix+4);
    li.sort();
    li.unique();
    li.reverse();
    list::iterator it=li.begin();
    while(it!=li.end())
    {   
        cout<<*it++<<' '; 
    }
    cout<
#include 
#include 
using namespace std;
int main()
{
    list l1;
    int a[5]={3,4,5,6,7};
    list l2(a,a+5);
    cout<<"l1.size="<::iterator it;
    it=mis.begin();
    //元素位置和key相关,和插入顺序无关
    //1.自动顺序的
    while(it!=mis.end())
    {
        cout<first<<":"<second<
  • 使用映射(map)建立阿拉伯数字0~9和英文单词zero到nine的映射关系,并输入阿拉伯数字(如1),输出英文数字(如one)。
#include 
#include 
#include 
using namespace std;
int main()
{
    int num;
    map mis;
    mis.insert(make_pair(0,"zero"));
    mis.insert(make_pair(1,"one"));
    mis.insert(make_pair(2,"two"));
    mis.insert(make_pair(3,"three"));
    mis.insert(make_pair(4,"four"));
    mis.insert(make_pair(5,"five"));
    mis.insert(make_pair(6,"six"));
    mis.insert(make_pair(7,"seven"));
    mis.insert(make_pair(8,"eight"));
    mis.insert(make_pair(9,"nine"));
    map::iterator it;
    cin>>num;
    for(it=mis.begin();it!=mis.end();it++)
    {
        if(it->first==num)
            cout<second<
  • vector 实现删除指定元素(vector num,从控制台输入int填充vector,删除指定元素)
#include 
#include 
using namespace std;
vector vi;
int main()
{
    int elem;
    int place;
    while(cin>>elem)
    {
        vi.push_back(elem);
    }
    for(vector::iterator it=vi.begin();it::iterator it1=vi.begin();it1::iterator it2=vi.begin();it2
  • const 的使用拓展
#include 
#include 
using namespace std;
class Test
{
    int m_t;
    public:
        Test(){}
        void lianxi()const
        {
            cout<<"lianxi const"<

你可能感兴趣的:(C++基础-(模板及标准模板库))