vector的使用

c++中vector的使用

vector是c++中的一个数据结构,使用很方便,vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。

  • vector的初始化
  • vector基本的函数
  • *vector的函数使用实例

vector的初始化

  1. vector():创建一个空vector
  2. vector(int nSize):创建一个vector,元素个数为nSize
  3. vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中
int sizeOfIntVec = 10;
vector<int> intVec(sizeOfIntVec);//生成一个大小为10的vector
for (int i = 0; i < sizeOfIntVec; i++)//给每一个元素赋值
    {
        intVec[i] = i;
        cout << "intVec[" << i << "]=" << intVec[i] << endl;
    }

使用第二种方式赋值

vector<int> appleVec = { 1, 2, 3, 4, 4, 5, 5, 5 }

使用第三种赋值的方式

:vector<int> foo(3, 100)//代表里面有三个100的元素

vector涉及的函数

  1. assign
  2. at
  3. clear
  4. push_back
  5. back
  6. front
  7. end
  8. pop_back
  9. erasa
  10. swap

使用实例

void vecTest()
{
    const int sizeOfArr = 10;
    int intArr[sizeOfArr] = { 1, 2, 3 };//初始化
    for (int i = 0; i < sizeOfArr; i++)
    {
        cout << "intArr[" << i << "] = " << intArr[i] << endl;
    }

    int sizeOfIntVec = 10;
    vector<int> intVec(sizeOfIntVec);

    for (int i = 0; i < sizeOfIntVec; i++)
    {
        intVec[i] = i;
        cout << "intVec[" << i << "]=" << intVec[i] << endl;
    }

    for (int i = intVec.size(); i < 16; ++i)
    {
        intVec.push_back(i);//元素进去
    }
    //for (int i = intVec.size(); i > 1; --i)
    //{
    //  intVec.pop_back();//元素出来
    //}

    int temp = intVec.at(1);
    temp = intVec[2];//通过下表访问到每一个元素

//实现swap,交换两个向量内容
    //std::vector<int> appleVec = { 1, 2, 3, 4, 4, 5, 5, 5 };
    std::vector<int> foo(3, 100);   // three ints with a value of 100
    std::vector<int> bar(5, 200);   // five ints with a value of 200

    //appleVec.swap(bar);
    foo.swap(bar);

    std::cout << "foo contains:";
    for (unsigned i = 0; i < foo.size(); i++)
        std::cout << ' ' << foo[i];
    std::cout << '\n';

    std::cout << "bar contains:";
    for (unsigned i = 0; i < bar.size(); i++)
        std::cout << ' ' << bar[i];
    std::cout << '\n';

    int back = intVec.back();//获取到最后一个元素
    int front = intVec.front();//获取到最前面的元素

    intVec.clear();//清理向量

    std::vector<int> myvector;

    // set some values (from 1 to 10)
    for (int i = 1; i <= 10; i++) myvector.push_back(i);

    // erase the 6th element
    myvector.erase(myvector.begin() + 5);

    // erase the first 3 elements:从一个开始擦除,第四个不擦除
    myvector.erase(myvector.begin() + 1, myvector.begin() + 3);

    std::cout << "myvector contains:";
    for (unsigned i = 0; i < myvector.size(); ++i)
        std::cout << ' ' << myvector[i];
    std::cout << '\n';

#注意的内容

  1. begin,end的值是迭代器使用的
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;
  for (int i=1; i<=5; i++) myvector.push_back(i);

  std::cout << "myvector contains:";
  for (std::vector<int>::iterator it = myvector.begin() ; it != myvector.end(); ++it)
    std::cout << ' ' << *it;
  std::cout << '\n';

  return 0;
}

vector也可以存放类

vector<Student> studentVector;
    vector<vector<Student>> studentVecVec;
    Student sts1(10,183,"lily");
    Student std2(20, 165, "lucy");
    Student std3(30, 180, "crias");
    studentVector.push_back(sts1);
    studentVector.push_back(std2);
    studentVector.push_back(std3);
    int studentSize = studentVector.size();
    studentVector.pop_back();
    int laterStudentSize = studentVector.size();
    sts1=studentVector.at(1);

2.capacity和size是不一样的
如果申请的元素的个数超过我们已经分配的,vector就会自动的多分配一些,这样就不用每次新增加一个元素,就动态的申请空间了。


vector::end - C++ Reference

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值