精华内容
下载资源
问答
  • 一、定义两个vector对象,分 别存放int、float数组元素,实现以下操作: 1.输入数组元素的值 2.修改数组中元素的值 3.向数组中间插入、删除元素 4.将数组首部和尾部元素删除 5.向数组首部和尾部插入元素 每次...
  • 文章目录0x00 前言二、使用步骤1....示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas

    0x00 前言

    文章中的文字可能存在语法错误以及标点错误,请谅解;

    如果在文章中发现代码错误或其它问题请告知,感谢!

    Windows版本:Win10专业版

    VSCode版本: 1.55.2 (user setup)

    0x01 vector定义动态数组及访问形式

    C++标准提供被封装的动态数组——vector。vector是一个封装动态大小数组的顺序容器(Sequence Container),这种被封装的数组可以具有各种类型。vector不是一个类,而是一个类模板。vector定义动态数组的形式为:

    vector<元素类型>数组对象名(数组长度);
    

    跟普通数组相比,使用vector定义的数组对象元素都会被初始化。若是数组元素为基本类型则元素初始化为0;若数组元素为类类型,则会调用类的默认构造函数初始化(需要保证该类具有默认的构造函数)。

    vector动态数组也可以自定义初值,形式为:

    vector<元素类型>数组对象名(数组长度,元素初值);
    

    对vector数组对象元素访问与普通数组相同:

    数组对象名[下标表达式]
    

    注意,vector数组对象不是数组,而是封装了数组的对象,vector数组名字表示的就是一个数组对象,而非数组的首地址。

    vector定义数组对象成员函数如下,其中size()返回数组长度,比较重要:

        1.push_back 在数组的最后添加一个数据
    
        2.pop_back 去掉数组的最后一个数据
    
        3.at 得到编号位置的数据
    
        4.begin 得到数组头的指针
    
        5.end 得到数组的最后一个单元+1的指针
    
        6.front 得到数组头的引用
    
        7.back 得到数组的最后一个单元的引用
    
        8.max_size 得到vector最大可以是多大
    
        9.capacity 当前vector分配的大小
    
        10.size 当前使用数据的大小
    
        11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值
    
        12.reserve 改变当前vecotr所分配空间的大小
    
        13.erase 删除指针指向的数据项
    
        14.clear 清空当前的vector
    
        15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)
    
        16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)
    
        17.empty 判断vector是否为空
    
        18.swap 与另一个vector交换数据
    

    0x02 vector应用举例

    #include<iostream>
    #include<vector>
    using namespace std;
    //计算arr数组元素平均值
    double average(const vector<double>&arr)
    {
    	double sum = 0;
    	int i = 0;
    	for(i = 0; i < arr.size();i++)
    	{
    		sum += arr[i];
    	}
    		return sum/arr.size();
    }
    
    int main()
    {
    	unsigned n;
    	cout << "n=:";
    	cin >> n;
    	
    	vector<double>arr(n);
    	cout << "Please input" << n << "real numbers:" << endl;
    	for(int i = 0; i < n;i++)
    	{
    		cin >> arr[i];
    	}
    	cout << "Average = " << average(arr) << endl;
    	return 0;
    }
    

    《C++语言程序设计(第4版)》书上所有章节出现的示例源代码随着学习的深入会陆续上传至github,代码为个人手动输入并通过编译,有的示例代码可能没有注释:https://github.com/fyw4/C-plus-plus-learning-example
    以上。

    参考文档:
    郑莉 董渊 何江舟.《C++语言程序设计(第4版)》[M].北京:清华大学出版社。

    展开全文
  • Vector接口介绍一.Member functions(创建)1.建立vector2.建立内置类型vector3.建立自定义类型vector4.数组方式建立(赋值)5.迭代器方式建立二.Iterators(迭代器)三.Capacity(内存容量)四.Element access(元素的访问...

    在这里插入图片描述

    Member functions(创建)

    vector 就当于一个动态的顺序表 ,下面是关于创建的方式,我在下面会具体的介绍:
    在这里插入图片描述

    1.建立空vector

    vector<类型>类名
    建立一个空的vector就和创建一个整型的数组变量一样,只是创建,并不对其进行赋值,所以称不上是初始化.

    	struct A{		//这里是简单的创建一个类,方便下面自定义类型的创建
    
    		A(int a = 1, int b = 2)
    		:_a(a)
    		, _b(b)
    		{}
    		int _a = 1;
    		int _b = 2;
    	};
    
    	//====建立出一个空的vector
    	
    	vector<int>v1;	//创建简单的整型vector
    	
    	vector<char>v2;	//创建字符类型的vector
    	
    	vector<A>v3;	//创建出一个自定义类型的vector
    

    2.建立内置类型vector

    vector<类型>类名(创建变量的大小)
    创建一个内置类型的意思就是创建的每一个空间都有一个对应的 类0值 :类0值,就是所开辟的空间都有着对应的 初始为的值,int就是0,char 就是’\0’,如下图:

    	vector<int>v4(5);	//开辟5个对应的整型空间,其中的值全为整型的0
    
    	vector<char>v5(5);	//开辟5个对应的字符空间,里面全是字符型的\0
    	
    	vector<int*>v6(5);	//因为是指针,所以内部全是地址型的0
    	
    	vector<float>v7(5);	//全是浮点形式的0
    

    在这里插入图片描述

    3.建立自定义类型vector

    vector<类型>类名(创建个数,类名(需要初始化的数据))
    建立一个自定义类型的vector ,就是相当于将上面的类A在vector 里面创建相同的空间的,我直接通过代码来解释,比较清晰

    struct A{		//这里是简单的创建一个类,方便下面自定义类型的创建
    
    		A(int a = 1, int b = 2)
    		:_a(a)
    		, _b(b)
    		{}
    		int _a = 1;
    		int _b = 2;
    	};
    
    	//自定义类型: 缺省值为默认构造函数
    	vector<A>v8(5);	//类似于开辟5个一样的A,其中的值为A里面的缺省值
    
    	vector<A>v9(5, A(10)); 
    	//这里是创建自定义的vector并给里面进行赋值,如果只有一个值则只给前面的进行赋值
    

    在这里插入图片描述

    4.数组方式建立(赋值)

    vector<具体类型>类名(对应数组,数组长度)

    	//数组方式
    	//将内部的初值转换成数组内部的数据
    	int arr[] = { 1, 2, 3, 4, 5 };
    	vector<int>v10(arr, arr + sizeof(arr) / sizeof(arr[0]));	
    	
    	//转换成char类型的12345
    	char arr2[] = { 1, 2, 3, 4, 5 };
    	vector<char>v11(arr2, arr2 + sizeof(arr2) / sizeof(arr2[0]));	
    

    在这里插入图片描述

    5.迭代器方式建立

    vector<类型>类名(利用迭代器获取的范围表示)

    	//迭代器方式
    	
    	string str("1234567890");		//直接创建一个String类的字符串
    	
    	vector<char>v12(str.begin(), str.end());	//利用迭代器获取起始和末尾的位置,进行输出
    

    在这里插入图片描述

    对于vector 的创建还是挺简单的,大家多敲代码,多看看在内存中的存储方式就能理解了.

    展开全文
  • C++_vector操作

    万次阅读 多人点赞 2019-05-28 11:24:15
    vector说明: vector是向量类型,可以容纳许多类型的数据,因此也被称为容器 (可以理解为动态数组,是封装好了的vector头文件-vector vector初始化: 方式1. vector<int>a(10);//定义具有10...

    1. vector:

    1.1 vector 说明

    • vector是向量类型,可以容纳许多类型的数据,因此也被称为容器
    • (可以理解为动态数组,是封装好了的类)
    • 进行vector操作前应添加头文件#include <vector>

    1.2 vector初始化:

    方式1.

    //定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值不确定
    vector<int>a(10);
    

    方式2.

    //定义具有10个整型元素的向量,且给出的每个元素初值为1
    vector<int>a(10,1);
    

    方式3.

    //用向量b给向量a赋值,a的值完全等价于b的值
    vector<int>a(b);
    

    方式4.

    //将向量b中从0-2(共三个)的元素赋值给a,a的类型为int型
    vector<int>a(b.begin(),b.begin+3);
    

    方式5.

     //从数组中获得初值
    int b[7]={1,2,3,4,5,6,7};
    vector<int> a(b,b+7;
    

    1.3 vector对象的常用内置函数使用(举例说明)

    #include<vector>
    vector<int> a,b;
    //b为向量,将b的0-2个元素赋值给向量a
    a.assign(b.begin(),b.begin()+3);
    //a含有4个值为2的元素
    a.assign(4,2);
    //返回a的最后一个元素
    a.back();
    //返回a的第一个元素
    a.front();
    //返回a的第i元素,当且仅当a存在
    a[i];
    //清空a中的元素
    a.clear();
    //判断a是否为空,空则返回true,非空则返回false
    a.empty();
    //删除a向量的最后一个元素
    a.pop_back();
    //删除a中第一个(从第0个算起)到第二个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)结束
    a.erase(a.begin()+1,a.begin()+3);
    //在a的最后一个向量后插入一个元素,其值为5
    a.push_back(5);
    //在a的第一个元素(从第0个算起)位置插入数值5,
    a.insert(a.begin()+1,5);
    //在a的第一个元素(从第0个算起)位置插入3个数,其值都为5
    a.insert(a.begin()+1,3,5);
    //b为数组,在a的第一个元素(从第0个元素算起)的位置插入b的第三个元素到第5个元素(不包括b+6)
    a.insert(a.begin()+1,b+3,b+6);
    //返回a中元素的个数
    a.size();
    //返回a在内存中总共可以容纳的元素个数
    a.capacity();
    //将a的现有元素个数调整至10个,多则删,少则补,其值随机
    a.resize(10);
    //将a的现有元素个数调整至10个,多则删,少则补,其值为2
    a.resize(10,2);
    //将a的容量扩充至100,
    a.reserve(100);
    //b为向量,将a中的元素和b中的元素整体交换
    a.swap(b);
    //b为向量,向量的比较操作还有 != >= > <= <
    a==b;
    

    2. 顺序访问vector的几种方式,举例说明

    2.1. 对向量a添加元素的几种方式

    1.向向量a中添加元素

    vector<int>a;
    for(int i=0;i<10;++i){a.push_back(i);}
    

    2.从数组中选择元素向向量中添加

    int a[6]={1,2,3,4,5,6};
    vector<int> b;
    for(int i=0;i<=4;++i){b.push_back(a[i]);}
    

    3.从现有向量中选择元素向向量中添加

    int a[6]={1,2,3,4,5,6};
    vector<int>b;
    vector<int>c(a,a+4);
    for(vector<int>::iterator it=c.begin();it<c.end();++it)
    {
    	b.push_back(*it);
    }
    

    4.从文件中读取元素向向量中添加

    ifstream in("data.txt");
    vector<int>a;
    for(int i;in>>i){a.push_back(i);}
    

    5.常见错误赋值方式

    vector<int>a;
    for(int i=0;i<10;++i){a[i]=i;}//下标只能用来获取已经存在的元素
    

    2.2 从向量中读取元素

    1.通过下标方式获取

    int a[6]={1,2,3,4,5,6};
    vector<int>b(a,a+4);
    for(int i=0;i<=b.size()-1;++i){cout<<b[i]<<endl;}
    

    2.通过迭代器方式读取

     int a[6]={1,2,3,4,5,6};
     vector<int>b(a,a+4);
     for(vector<int>::iterator it=b.begin();it!=b.end();it++){cout<<*it<<"  ";}
    

    3.几个常用的算法

     #include<algorithm>
     //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
     sort(a.begin(),a.end());
     //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
     reverse(a.begin(),a.end());
      //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素
     copy(a.begin(),a.end(),b.begin()+1);
     //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
      find(a.begin(),a.end(),10);
    

    4. 写在最后

    本人已经毕业半年有余,深刻感受到生活不易,之前更新博客的时候从没想到自己的博客会有这么多人喜欢,在这里感谢各位朋友的信任,同时也祝福各位同学前程似锦,学业进步!

    同时,在这里出售全套的文字学习资料:

    具体包括《C primer plus》原文、练习及源代码;C语言具体各部分详解书籍;

    《C++ primer plus》原文、练习及源代码;各种C++相关书籍;

    《数据结构 C++ 语言描述》《数据结构 C 语言描述》《数据结构》严蔚敏版;数据结构相关书籍;

    《powershell 入门教程》;《剑指offer 第二版》原文及源代码;《深入了解计算机系统》中文版,布莱恩特著,等等书籍;

    全套资料售价¥68.8,单套¥19.9

    展开全文
  • 前言:此篇文章简单介绍vector类的常用...创建了一向量对象后,可以往其中随意插入不同对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。 对于预先不知或者不愿预先定义数组大小,...

    前言:此篇文章简单介绍vector类的常用方法,并编写程序实现通过键盘输入的文本动态加入Vector类对象。

    01. Vector类

    (1)概述

    • java.util.vector提供了向量类(vector)以实现类似动态数组的功能。
    • 创建了一个向量类的对象后,可以往其中随意插入不同类的对象,即不需顾及类型也不需预先选定向量的容量,并可以方便地进行查找。
    • 对于预先不知或者不愿预先定义数组大小,并且需要频繁地进行查找,插入,删除工作的情况。可以考虑使用向量类。

    (2)常用定义方法

    参考:java Vector类Vector使用详解

    插入方法

    • 将指定的元素添加到此向量的末尾,将其大小增加 1
    void adddElement(Object obj)
    

    eg:

    Vector v = new Vector(); 
    Integer a = new Integer(1); 
    v.addElement("one"); 
    v.addElement(a); 
    

    output:

    v=[one,1]

    • 将位置index处的对象设置成obj,原来的对象将被覆盖。
    void setElementAt(Object obj, int index) 
    

    eg:

    v.seetElement(,1); //将第1个位置的元素替换(角标从0开始)
    

    output :

    v=[one,我]

    • 在index指定的位置插入obj,原来对象以及此后的对象依次往后顺延
    void insertElementAt(Object obj,int index) 
    

    eg:

    v.insertElementAt("你",0);
    

    output :

    v=[你,我,1]

    删除方法

    • 从向量中删除obj,若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员
    void removeElement(Object obj)
    

    eg:

    v.addElement("你"); //此时v=[你,我,1,你]
    v.removeElement("你");//删除第一个“你”
    

    output :
    v=[我,1,你]

    • 删除向量所有的对象
    void removeAllElement(); 
    
    • 删除index所指的地方的对象
    void removeElementAt(int index) 
    

    eg:

    //v=[我,1,你]
    v.removeElementAt(1)
    

    output :
    v=[我,你]

    ③ 查询搜索方法 :

    • 从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1.
    int indexOf(Object obj)
    
    • 从index所表示的下标处开始搜索obj.
    public final synchronized int indexOf(Object obj,int index) 
    
    • 从向量尾部开始逆向搜索obj.
    int lastindexOf(Object obj) 
    

    02. 实现通过键盘输入的文本动态加入Vector类对象

    • 代码
    
    import java.util.Vector;//导入Vector类
    import java.util.Scanner;//导入Scanner类
    
    public class vec
    {
    	//@SuppressWarnings("unchecked")
    	public static void main(String[] args)
    	{
    		Scanner instr=new Scanner(System.in);//从键盘输入
    		//Vector v=new Vector();
    		Vector<String> v = new Vector<String>();//创建一个动态数组
    		while(true)
    		{
    			System.out.println("\n输入:\n");
    			String str=instr.nextLine();//获取键盘输入的下一行赋值给str字符串
    			//当输入"。"时跳出程序
    			if(!str.equals("。"))
    			{
    				v.addElement(str);//将从键盘输入的字符串str加入动态数组v
    				
    			}
    			else
    			{
    				break;
    			}
    			//System.out.print("\n输入内容为:"+v+"\n");
    
    			System.out.print("\n文本内容:\n");//显示台输出
    			//依次提取数组中的字符串打印到显示台
    			for(int i=0;i<v.size();i++)
    			{
    				System.out.print(v.get(i));
    			}
    
    			System.out.println("\n总共输入了"+v.size()+"次\n");//v.size()计算数组元素个数
    		}
    	}
    }
    
    
    • 运行结果
      在这里插入图片描述
    展开全文
  • 2018/12/1 Vector学习笔记+匿名对象问题

    千次阅读 2018-12-02 00:06:35
    push_back() 函数只接受一参数,无返回值。 class Student { private: string name; int age; public: Student(const string&amp;amp;amp;amp; name_, int age_) { name = name_; age = age_; ...
  • 对C++中用vector创建数组对象的认识

    千次阅读 2015-01-24 22:45:48
    注意:用vector 创建的数组对象一定要进行初始化,如果是基本数据类型,则要0初始化,如果是类型,则要调用的默认构造函数,这时就要保证中一定要有默认构造函数,当然用户也可以自己为他赋值,但赋的初值都...
  • JAVA中的vector类

    2020-07-02 15:59:29
    Vector 可实现自动增长的对象数组。java.util.vector提供了向量(vector)以实现类似动态数组的功能。 为什么会有这样一个类的存在呢? C语言里面指针的存在,能大大提高程序的效率,C++中的...创建了一向量的对
  • C++ vector的使用总结及常用vector操作

    千次阅读 多人点赞 2019-09-07 00:48:48
    C++ vector类为内置数组提供了一种替代表示,与string一样 vector 是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include <vector> 二、使用方式 C++ vector类有两种使用方式: 第一种:...
  • find函数在vector中遍历查找中某个变量值相等的 为了偷懒,就没自己写查找函数,于是就起了“find();”函数去找,结果比自己写一查找函数花的时间还要久。接下来就讲讲整个过程。 我是新人,所以第一...
  • 在开发C/C++线程程序时,STL集合是我们经常用到的,比如vector. 而C/C++的这些集合并没有同步版本,所以在线程访问时,如果某个线程正在修改集合A, 而其他线程正在访问A,那么会造成数据冲突,导致程序抛...
  • 将刚刚创建的数组拷贝给另一数组。利用vector 重新写此程序完成类似的功能。 然后我就在网上寻找答案,同时也学习了很拷贝的方法   一、初始化构造时拷贝 vector&lt;int&gt; tem(list); 这种拷贝...
  • Java中Vector类的常用方法

    万次阅读 多人点赞 2019-07-10 20:29:56
    Vector 可实现自动增长的对象数组。 Vector构造的时候 1.如果不放入数字就是默认值10 2.放入一数的时候,就是默认的大小,当超过这数的范围的时候,按照原容量的二倍扩增,重新分配内存 3.放入两数的时候,第...
  • C++vector的使用总结及常用vector操作

    万次阅读 多人点赞 2018-07-12 22:10:22
    一、C++ vector类为内置数组提供了一种替代表示,与string一样 vector 是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include &lt;vector&gt; 二、C++ vector类有两种使用方式: 第一种...
  • 本次学习的任务要求:完成一java application应用程序,通过接收用户通过键盘输入的文本,把每次回车输入的字符串动态加入到Vector类对象中,并显示此Vector类对象中存储的字符串。 二、分析学习 这里的V...
  • vector类 的属性和用法

    万次阅读 多人点赞 2018-08-22 13:07:30
    vector简介  vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就...
  • c++之vector创建容器)

    千次阅读 2019-04-03 18:09:06
    集合中每个对象都有一个对应的索引,用于访问对象 头文件 #include<vector> #using std::vector 提供信息的方式为:在模板名字后面跟着的一对尖括号里放上信息 vector<T> v1 不同类型的元素只能放...
  • Why is Java Vector considered a legacy class, obsolete or deprecated? 为什么Java Vector被认为是遗留,已过时或已弃
  • 定义和初始化vector对象

    千次阅读 2015-08-30 10:00:57
    **默认初始化**vector对象从而创建指定类型的空vectorvector<string> svec; //默认初始化,svec不含任何元素看起来空vector好像没什么,但是很快我们就会知道程序在运行时可以很高效地往vector对象中添加...
  • C++基础——vector类用法总结

    万次阅读 多人点赞 2018-08-14 18:05:04
    一、C++ vector类为内置数组提供了一种替代表示,与string一样 vector 是随标准 C++引入的标准库的一部分,使用时需包含头文件: #include &lt;vector&gt; 二、C++ vector类有两种使用方式: 第一种...
  • [C++]vector创建二维数组

    万次阅读 多人点赞 2018-07-29 09:10:18
    将c重置为大小为n元素向量,如果n比原来的元素,则出的元素常被初始化为0//节选《面向对象的程序设计》杜茂青 int N=5, M=6; vector&lt;vector&lt;int&gt; &gt; Matrix(N); for(int i =0; ...
  • Vector 可实现自动增长的对象数组。  java.util.vector提供了向量(vector)以实现类似...为了弥补这缺点,Java提供了丰富的类库来方便编程者使用,vector类便是其中之一。事实上,灵活使用数组也可以完成向量
  • vector类中的构造函数

    千次阅读 2014-11-05 20:13:49
    向量容器使用动态数组存储、管理对象。因为数组是一随机访问数据结构,所以可以随机访问向量中的元素。在数组中间或是开始处插入一元素是费时的,特别是在数组非常大的时候更是如此。然而在数组末端插入元素却...
  • vector(Java与C++语言中的对象)

    千次阅读 2018-02-25 16:11:39
    Vector 是在 java 中可以实现自动增长的对象数组,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板和函数库。中文名容器外文名vector运用软件JAVA、C++属 性类库头文件#...
  • 1.利用函数可调用对象创建线程 #include<thread> #include<vector> using namespace std; void print(){ //无参函数 cout<<"print"<<endl; } void print2(int i){ //有参函数 cout<&...
  • vector,线程的C问题

    2016-01-22 06:18:48
    我需要createthread将vector的里的数据输出,求各位帮忙吧
  • c++ vector对象方法用法

    千次阅读 2014-03-23 15:34:41
    C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。...vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。 一、 定义和初始化 vector
  • C++中Vector类的使用

    千次阅读 2016-08-14 09:31:06
    讲述了C++中的Vector的本质,使用方法等。
  • JAVA基础再回首(十五)——List的三子类、ArrayListVector类、LinkedList的使用与练习 版权声明:转载必须注明本文转自程序员杜鹏程的博客:http://blog.csdn.net/m366917 我们来继续学习集合 List的三...
  • 然而更常见的情况是:创建 vector 对象时并不清楚实际所需的元素数,元素的值也经常无法确定。还有些时候即使元素的初值已知,但如果这些值总量较大而各不相同,那么在创建 vector 对象的时候执行初始化...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 149,769
精华内容 59,907
关键字:

如何用vector创建多个类对象