c++中vector的使用
vector是c++中的一个数据结构,使用很方便,vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。
- vector的初始化
- vector基本的函数
- *vector的函数使用实例
vector的初始化
- vector():创建一个空vector
- vector(int nSize):创建一个vector,元素个数为nSize
- 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涉及的函数
- assign
- at
- clear
- push_back
- back
- front
- end
- pop_back
- erasa
- 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';
#注意的内容
- 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