vector使用过程中的一些坑(持续更)

vector使用过程中的一些坑(持续更)

1.vector为空时不能通过下标标赋值,如:

#include <iostream>
#include <vector>
using namespace std;
 
int main()
{
    vector<int> v;
    v[0] = 1;
    return 0;
}

v初始为空所以出错
但只要初始vector有容量通过下标赋值就可以:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int>a(1);
	a[2]=1;
	cout<<a[2];
}

在这里插入图片描述
就能成!

2.vector通过数组下标访问时注意vector为空时不能通过下标标赋值,如:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int>a;
	a[2]=1;
	cout<<a[2];
}

v初始为空所以出错
但只要初始vector有容量通过下标赋值就可以:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int>a(1);
	a[2]=1;
	cout<<a[2];
}

3.vector通过数组下标访问时注意这个元素是存在的,不然会出现运行内存错误,如:

#include<bits/stdc++.h>
using namespace std;

int main()
{
	vector<int>a(10);
	a[2]=1;
	a[10]=1;
	cout<<a[10];
}

a[10]是越界的,这段代码访问了vector末尾以后的元素,这将可能导致很危险的结果,但系统不会报错。

建议使用at函数访问如:

vector<int> v(10,0);
cout<<v.at(11)<<endl;

以下的代码将更加安全,取代试图访问内存里非法值的作法,at() 函数能够辨别出访问是否越界并在越界的时候中止程序。

4.创建类似二维数组的vector:

vector<int> v[N]; 

它创建了一个由第1个类型的N个vector组成的静态数组。
v[0]现在是一个和v[1]完全不同的vector。注意,v[0]是vector而不是vector中的元素。如果我们想向第1个vector push一个值,可以通过 v[0].push_back(val)。为了访问那个元素我们可以通过 v[0][0]来访问(类似2维矩阵)。

例:

    vector <int> v2[n]; 
    v2[0].push_back(1); 
    v2[0].push_back(20); 
    cout << '\n'; 
    for(int i = 0; i < v2[0].size(); i++ ) 
       cout << v2[0][i] << " "; 

在这里插入图片描述

**5.**vector容器可以通过还可以通过以下2种构造函数初始化:

vector<int> v(v2);
vector<int> v = v2;

v从v2 复制数据。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
C++,`vector`是一种动态数组,可以存储任意类型的数据。它提供了方便的插入、删除和查找操作,以及自动管理内存的功能。下面是使用`vector`的一些基本步骤: 1. 包含头文件:在使用`vector`之前,需要包含`<vector>`头文件。 ```cpp #include <vector> ``` 2. 声明变量:创建一个`vector`对象,指定其大小。 ```cpp std::vector<int> myVector(10); // 创建一个大小为10的整数vector ``` 或者 ```cpp std::vector<std::string> myVector; // 创建一个空的字符串vector ``` 3. 插入元素:使用`push_back()`函数向`vector`添加元素。可以使用循环语句插入多个元素。 ```cpp myVector.push_back(1); // 向vector添加一个元素 myVector.push_back(2); // 再添加一个元素 // ... ``` 4. 访问元素:使用索引访问`vector`的元素。可以使用下标运算符`[]`或`.at()`函数来访问元素。 ```cpp int firstElement = myVector; // 访问第一个元素 std::string secondElement = myVector.at(1); // 访问第二个元素(注意:如果索引超出范围,会触发异常) ``` 5. 修改元素:可以使用赋值运算符修改`vector`的元素。 ```cpp myVector = 3; // 修改第一个元素为3 ``` 6. 删除元素:使用`erase()`函数删除`vector`的元素。可以使用循环语句删除多个元素。 ```cpp myVector.erase(myVector.begin() + 1); // 删除第二个元素(注意:要确保索引不超出范围) ``` 7. 迭代器遍历:可以使用迭代器遍历`vector`的元素。 ```cpp std::vector<int>::iterator it; for (it = myVector.begin(); it != myVector.end(); ++it) { std::cout << *it << std::endl; // 输出每个元素的值 } ``` 8. 大小和容量:可以使用成员函数`size()`和`capacity()`来获取`vector`的大小和容量。还可以使用成员函数`reserve()`来预先分配足够的内存空间。 这些是使用C++的`vector`的基本步骤。通过这些操作,可以方便地管理动态数组,并在程序灵活使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值