zoukankan      html  css  js  c++  java
  • vector 的用法(c++)

    vertor是向量类型,它是一个对象实体。它作为容器可以容纳不同的实体,如int,flout,double,还有类类型。

    1.包含头文件 #include <vector>

    2.声明:vector<int> vet;

    3.定义:

    vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定
    vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1
    vector<int> c(b);//用另一个向量创建新向量
    vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量
    
    int arr[7]={1,2,3,4,5,6,7};
    vector<int> va(arr,arr+7);//从数组创建向量

    4.遍历:

    遍历有两种方式,一个是用下标遍历,类似数组,还有就是使用迭代器遍历,代码如下:

    //遍历:
    for(int i=0;i<a.size();i++){
        cout<<a[i]<<"  ";
    } 
    cout<<endl;
    
    vector<int>::iterator it;
    for(it=b.begin();it!=b.end();it++){
        cout<<*it<<"  ";
    }
    cout<<endl;

    5.在结尾处添加元素:va.push_back(8);

    6.删除结尾的元素:va.pop_back();

    7.查看向量的大小:va.size();

    8.查看向量是否为空:va.empty();

    9.插入元素:va.insert(va.begin()+3,10);

    10.删除某个元素:va.erase(va.begin()+3);

    10.清空所以元素:va.clear()

    算法: 包含头文件 #include <algorithm>

    1.sort(va.begin(),va.end()), 对向量进行排序。默认为从小到大。

    2.reverse(va.begin(),va.end()),对向量进行翻转

    代码:

    #include <iostream>
    #include <vector>
    #include <algorithm> 
    using namespace std;
    
    void print_vec(vector<int> & a){
        vector<int>::iterator it;
        for(it=a.begin();it!=a.end();it++){
            cout<<*it<<"  ";
        }
        cout<<endl;
    }
    
    int main(){
    
    vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定
    vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1
    vector<int> c(b);//用另一个向量创建新向量
    vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量
    
    int arr[7]={1,2,3,4,5,6,7};
    vector<int> va(arr,arr+7);//从数组创建向量
    
    //遍历:
    for(int i=0;i<a.size();i++){
        cout<<a[i]<<"  ";
    } 
    cout<<endl;
    
    vector<int>::iterator it;
    for(it=b.begin();it!=b.end();it++){
        cout<<*it<<"  ";
    }
    cout<<endl;
    
    va.push_back(8);
    print_vec(va);
    
    va.pop_back();
    print_vec(va);
    
    a.assign(va.begin(),va.begin()+3);
    print_vec(a);
    
    a.assign(8,4);
    print_vec(a);
    
    a.clear();
    cout<<"clear"<<endl;
    print_vec(a);
     
     if(a.empty()) cout<<"empty"<<endl;
     
     a.resize(10);
     print_vec(a);
     a.clear();
     a.resize(10,2);
     print_vec(a); 
     
     //插入删除元素
     cout<<"插入和删除:"<<endl; 
     va.insert(va.begin()+3,10);//在该位置插入对应的元素 
     print_vec(va); 
     va.erase(va.begin()+3);//删除该位置的元素 
     print_vec(va); 
     
     if(a==b) cout<<"equal"<<endl;
     
     cout<<"size:"<<va.size()<<"front: "<<va.front()<<" back:"<<va.back()<<endl;
     
     //算法
     reverse(va.begin(),va.end());
     print_vec(va);
     
     sort(va.begin(),va.end());
     print_vec(va); 
     
    return 0;
    }
    
     
  • 相关阅读:
    【题解】【BT】【Leetcode】Populating Next Right Pointers in Each Node
    【题解】【BT】【Leetcode】Binary Tree Level Order Traversal
    【题解】【BST】【Leetcode】Unique Binary Search Trees
    【题解】【矩阵】【回溯】【Leetcode】Rotate Image
    【题解】【排列组合】【素数】【Leetcode】Unique Paths
    【题解】【矩阵】【回溯】【Leetcode】Unique Paths II
    【题解】【BST】【Leetcode】Validate Binary Search Tree
    【题解】【BST】【Leetcode】Convert Sorted Array to Binary Search Tree
    第 10 章 判断用户是否登录
    第 8 章 动态管理资源结合自定义登录页面
  • 原文地址:https://www.cnblogs.com/yuqt/p/6008856.html
Copyright © 2011-2022 走看看