网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
cout << *it << " ";//解引用
}
cout << endl;
}
void test01()
{
vector<int> v1; //无参构造
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
vector<int> v2(v1.begin(), v1.end());
printVector(v2);
vector<int> v3(10, 100);//传入10个100
printVector(v3);
vector<int> v4(v3);//拷贝构造
printVector(v4);
}
int main() {
test01();
system("pause");
return 0;
}
\*\*总结:\*\*vector的多种构造方式没有可比性,灵活使用即可
#### []( )3.2.3 vector赋值操作
**功能描述:**
* 给vector容器进行赋值
**函数原型:**
* `vector& operator=(const vector &vec);`//重载等号操作符
* `assign(beg, end);` //将\[beg, end)区间中的数据拷贝赋值给本身。
* `assign(n, elem);` //将n个elem拷贝赋值给本身。
**示例:**
#include
void printVector(vector& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
//赋值操作
void test01()
{
vector<int> v1; //无参构造
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
vector<int>v2;//等号传入
v2 = v1;
printVector(v2);
vector<int>v3;
v3.assign(v1.begin(), v1.end());
printVector(v3);
vector<int>v4;
v4.assign(10, 100);
printVector(v4);
}
int main() {
test01();
system("pause");
return 0;
}
总结: vector赋值方式比较简单,使用operator=,或者assign都可以
#### []( )3.2.4 vector容量和大小
**功能描述:**
* 对vector容器的容量和大小操作
**函数原型:**
* `empty();` //判断容器是否为空
* `capacity();` //容器的容量
* `size();` //返回容器中元素的个数
* `resize(int num);` //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
* `resize(int num, elem);` //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
**示例:**
#include
void printVector(vector& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
void test01()
{
vector<int> v1;
for (int i = 0; i < 10; i++)
{
v1.push_back(i);
}
printVector(v1);
if (v1.empty())
{
cout << "v1为空" << endl;
}
else
{
cout << "v1不为空" << endl;
cout << "v1的容量 = " << v1.capacity() << endl;
cout << "v1的大小 = " << v1.size() << endl;
}
//resize 重新指定大小 ,若指定的更大,默认用0填充新位置,
//可以利用重载版本替换默认填充
v1.resize(15,10);
printVector(v1);
//resize 重新指定大小 ,若指定的更小,超出部分元素被删除
v1.resize(5);
printVector(v1);
}
int main() {
test01();
system("pause");
return 0;
}
总结:
* 判断是否为空 — empty
* 返回元素个数 — size
* 返回容器容量 — capacity
* 重新指定大小 — resize
#### []( )3.2.5 vector插入和删除
**功能描述:**
* 对vector容器进行插入、删除操作
**函数原型:**
* `push_back(ele);` //尾部插入元素ele
* `pop_back();` //删除最后一个元素
* `insert(const_iterator pos, ele);` //迭代器指向位置pos插入元素ele
* `insert(const_iterator pos, int count,ele);`//迭代器指向位置pos插入count个元素ele
* `erase(const_iterator pos);` //删除迭代器指向的元素
* `erase(const_iterator start, const_iterator end);`//删除迭代器从start到end之间的元素
* `clear();` //删除容器中所有元素
**示例:**
#include
void printVector(vector& v) {
for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
cout << *it << " ";
}
cout << endl;
}
//插入和删除
void test01()
{
vector<int> v1;
//尾插
v1.push_back(10);
v1.push_back(20);
v1.push_back(30);
v1.push_back(40);
v1.push_back(50);
printVector(v1);
//尾删
v1.pop_back();
printVector(v1);
//插入
v1.insert(v1.begin(), 100);//在第一个位置前插入100
printVector(v1);
v1.insert(v1.begin(), 2, 1000);//在第一个位置前插入2个1000
printVector(v1);
//删除
v1.erase(v1.begin());//删除第一个位置的元素
printVector(v1);
//清空
v1.erase(v1.begin(), v1.end());//删除区间内的元素
v1.clear();//清空容器
printVector(v1);
}
int main() {
test01();
system("pause");
return 0;
}
总结:
* 尾插 — push\_back
* 尾删 — pop\_back
* 插入 — insert (位置迭代器)
* 删除 — erase (位置迭代器)
* 清空 — clear
#### []( )3.2.6 vector数据存取
**功能描述:**
* 对vector中的数据的存取操作
**函数原型:**
* `at(int idx);` //返回索引idx所指的数据
* `operator[];` //返回索引idx所指的数据
* `front();` //返回容器中第一个数据元素
* `back();` //返回容器中最后一个数据元素
**示例:**
#include
void test01()
{
vector<int>v1;
for (int i = 0; i < 10; i++){
v1.push_back(i);//尾压元素
}
for (int i = 0; i < v1.size(); i++){
cout << v1[i] << " ";//用[]访问
}
cout << endl;
for (int i = 0; i < v1.size(); i++){
cout << v1.at(i) << " ";//用at()访问
}
cout << endl;
cout << "v1的第一个元素为: " << v1.front() << endl;
cout << "v1的最后一个元素为: " << v1.back() << endl;
}
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
.size(); i++){
cout << v1[i] << " ";//用[]访问
}
cout << endl;
for (int i = 0; i < v1.size(); i++){
cout << v1.at(i) << " ";//用at()访问
}
cout << endl;
cout << "v1的第一个元素为: " << v1.front() << endl;
cout << "v1的最后一个元素为: " << v1.back() << endl;
}
[外链图片转存中…(img-z78HLRVU-1715683182180)]
[外链图片转存中…(img-HOkHj7Q6-1715683182180)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!