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

简介: 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 复制数据。

蔡珏
+关注
目录
打赏
0
0
0
0
2
分享
相关文章
程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。
【5月更文挑战第11天】程序员难以一次性写好代码并持续修复Bug,主要源于软件的高复杂性、需求不确定性、测试局限性和技术能力限制。复杂的系统易产生意外问题,需求变化导致初始设计难完备,测试无法覆盖所有情况,而技术更新和个体能力差异也会引入错误。因此,持续调试和优化是保证软件质量的关键步骤。
106 0
AS3使用过程中问题总结
AS3使用过程中问题总结
79 0
Sub过程
参数表是用来指明调用该Sub过程时需要传递给该过程的参数及类型。表内的参数称为形参。Sub过程可以没有形参(但小括号不可以省略),也可1到多个形参(多个之间用逗号隔开);
Sub过程
一次有趣的学习过程
嗨!大家好,我是小蚂蚁。 今天这篇文章记录的是一次有趣的学习过程,起因是昨天我在学员群里发了这样的一条信息。 这原本是一位学员的需求,想要在游戏中做一个文字逐个出现的打字机效果,因为我暂时还没有写与此相关的教程(也没有考虑过如何实现),所以就把这个问题抛了出来,顺便看一下大家的想法。 没想到的是这下可热闹了,下面记录的就是关于这次有趣的学习的全过程。
107 0
一道优化过程的题
一道优化过程的题
138 0
优化过程的一道题
优化过程的一道题
113 0
使用过程心得
一些常用操作和常见问题
使用过程心得
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等