c++ vector

vector

cplusplus vector

1、定义和初始化

//空vector,size()为0,capacity()为0
vector<type> vector_name;

//创建一个具有num个初始值的vector
vector<type> vector_name(num);

//创建一个具有num个值为val的vector
vector<type> vector_name(num,val);

//用数组来初始化vector
int  array[] = {1,2,2,3};
//vector_name = {1,2,2}
vector<int> vector_name(array,array+3);

//用迭代器来初始化vector
int  array[] = {1,2,2,3,4,5,6};
vector<int> vector_data(array, array+7);
//vector_name = {1,2,2,3,4},不包括vector_data.begin()+5
vector<int> vector_name(vector_data.begin(),vector_data.begin()+5);

//复制对象
vector<type> vector_name(vector_copy);

2、insert,earse

int  array[] = {1,2,2,3,4,5,6};
// vector_data = {1,2,2,3,4,5,6}
vector<int> vector_data(array, array+7);

// vector_data = {1,2,2,10,3,4,5,6},在vector_data.begin()+3之前插入10
vector_data.insert(vector_data.begin()+3,10);

//vector_data = {1,2,10,3,4,5,6},删除vector_data.begin()+2所指向元素
vector_data.erase(vector_data.begin()+2);

insert或erase的参数为两个迭代器时,插入/删除的区间是[first, last),即第二个迭代器指向的元素不会被插入/删除

3、size,capacity,reserve,resize

// size返回元素个数
vector< vector<int> > Vector(3,vector<int>(4,10));
std::cout << Vector.size() << endl;//输出3

//capacity返回已分配的空间,以element为单位
vector<int> Vector;
std::cout << Vector.capacity() << endl;//输出0
for (int i = 0; i < 5; i++) {
    Vector.push_back(i);
    std::cout << Vector.capacity() << endl;
    //依次输出1,2,4,4,8
}
//reserve要求至少分配n个元素的空间
Vector.reserve(10);
std::cout << Vector.capacity() << endl; // 输出10

//但是当vector的capacity超过reserve要求的值时,不重新分配空间,此处不举例

//resize(n,val)若当前元素个数超过n则截断到第n个元素,否则用val来填充至n个元素,若没有指定val则用默认初始值填充
Vector.clear();
//Vector={10,10,10,10,10}
Vector.resize(5,10);
//Vector={10,10,10}
Vector.resize(3);
//Vector={10,10,10,0,0,0}
Vector.resize(6);

猜你喜欢

转载自blog.csdn.net/unirrrrr/article/details/80428328