容器初始化、赋值、关系运算

1.vector初始化方法

1.1vector、list、deque、string初始化方法

//四种初始化方法
    //初始化方法1
    //1.10个1;
    vector<int> vec1(10, 1);
    vector<int> vec2{0,1,2};//列表初始化
    vector<int> vec3;

    //2.初始化方法2
    //2.1要求有相同的容器类型和元素类型
    vec3 = vec2;//拷贝初始化

    //3.初始化方法3
    //3.1同vec2
    vector<int> vec4 = { 0, 1, 2, 3, 4 };

    //4.初始化方法4
    //4.1要求元素类型相同
    vector <int> vec5(vec2.crbegin(), vec2.crend());

1.2 array初始化方法,c中数组概念不支持拷贝,但是容器array支持赋值操作,具体如下:

array<int, 10> digits = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
array<int, 10> copy = digits;

2.赋值运算

  • 由于其旧元素被替换,因此传递给assign的迭代器不能指向调用assign的容器
names.assign(names.cbegin(),names.cend())  //同一个容器names
  • 赋值相关运算会导致指向左边容器内部的迭代器、引用、指针失效。而swap操作将容器内容交换不会导致容器的迭代器、引用和指针失效,下面的程序可以正常编译运行
    //验证使用swap不改变迭代器、指针、引用,而赋值改变
    vector<int> vec1{ 5, 6, 7, 8, 9};
    vector<int> vec2{ 0, 1, 2, 3, 4, 5, 6 };//列表初始化
    vector<int> vec3;

    //1.用swap进行赋值运算,交换vec1和vec2
    vec1.swap(vec2);
    for (vector<int>::iterator it = vec1.begin(); it!= vec1.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;
    //2.直接赋值vec3 =vec2
    vec3 = vec2;
    for (vector<int>::iterator it = vec3.begin(); it != vec3.end(); ++it)
    {
        cout << *it << " ";
    }
  • 容器的assign赋值
//1.10个1;
    vector<int> vec1(10, 1);
    vector<int> vec2{0,1,2,3,4,5,6,7,8,9};//列表初始化
    vector<int> vec3{0,1,2};

    //2.初始化方法2和赋值
    //2.1要求有相同的容器类型和元素类型
    //vec3 = vec2;//拷贝初始化
    swap(vec3, vec2); //vec2{0,1,2};vec3{0,1,2,3,4,5,6,7,8}

    //3.初始化方法3
    //3.1同vec2
    vector<int> vec4 = { 0, 1, 2, 3, 4 };

    //4.初始化方法4
    //4.1要求元素类型相同
    vector <int> vec5(vec2.crbegin(), vec2.crend()); //vec5{2,1,0}

    //5.初始化方法和赋值
    //swap函数
    vector<int> vec6;
    vec6.swap(vec5);//vec5{};vec6{2,1,0}

    //6.初始化方法和赋值
    //assign
    vector<int> vec7;
    //6.1两个迭代器间隔赋值{2,3,4,5,6,7}
    vec7.assign(vec3.cbegin() + 2, vec3.cend() - 2);
    //将元素替换为初始化列表i1中的元素
    vector<int> vec8;
    vec8.assign(10, 2);

3.关系运算符

  • 相同类型的容器
  • 保存相同类型的元素
  • 元素类型也定义了相应的比较运算符
时间: 2024-11-13 09:18:57

容器初始化、赋值、关系运算的相关文章

黑马程序员————C语言基础语法二(算数运算、赋值运算符、自增自减、sizeof、关系运算、逻辑运算、三目运算符、选择结构、循环结构)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 第一讲  算数运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1.加法运算+ 除开能做加法运算,还能表示正号:+5.+90 2.减法运算- 除开能做减法运算,还能表示符号:-10.-29 3.乘法运算* 注意符号,不是x,而是* 4.除法运算/ 注意符号,不是÷,也不是\,而是/ 整数除于整数,还是整数.1/2的值是0,这个并不是二分之一 5.取余运算% 什么是取余:两个整数相除之后

IOC容器初始化

参考:https://www.cnblogs.com/ITtangtang/p/3978349.html 一.Ioc/DI 控制反转,把原先代码里需要实现的对象的创建.依赖的代交给容器帮忙实现.所以需要创建一个容器,同时需要一种描述让容器知道需要创建的对象与对象之间的关系. 对象与对象之间的关系通过 xml, properties 文件等语义化配置文件表示.文件存放位置:类路径,文件系统,URL,servletContext等. 不同的配置文件对对象的描述不一样,所以内部需要一个统一的关于对象的

Spring IOC源代码具体解释之容器初始化

Spring IOC源代码具体解释之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比較典型的代码 ClassPathResource res = new ClassPathResource("beans.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBea

Servlet初始化相关问题,以及Spring容器初始化

一.Servlet初始化 ①Servlet在初始化的时候,是通过init(ServletConfig config) 或 init() 来执行的. ServletConfig 是一个接口,它怎样传递给他一格对象来进行初始化呢?其实,是这个对象是由 servlet 容器来实例化的,由容器产生一格 ServletConfig 的实现类的对象,然后传递给 Servlet ②我们有些时候可能在 Servlet 初始化时给它一些固定的配置参数,那么这些参数是怎样传递到 Servlet 呢?其实,我们在 w

Spring IOC源码详解之容器初始化

Spring IOC源码详解之容器初始化 上篇介绍了Spring IOC的大致体系类图,先来看一段简短的代码,使用IOC比较典型的代码 ClassPathResource res = new ClassPathResource("beans.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDe

蓝鸥Unity开发基础——关系运算和逻辑运算学习笔记

蓝鸥Unity开发基础--关系运算和逻辑运算学习笔记 本节内容 关系运算符 逻辑运算符 一.关系运算符 > >= < <= == != 主要用于比较运算,比较的结果只有true或false两种情况,结果用boo类型变量存储 注意:判断是否相等,用==(双等号) 不能用零或非零代表bool值  二.逻辑运算符 逻辑运算符组成的表达式结果也只有ture或false &&(与):运算符两边表达式地值同时为真的时候,整个逻辑表达式的值才为真 ||(或):运算符两边表达式的值

IOC容器初始化——BeanDefinition的Resource定位

以编程的方式使用DefaultListableBeanFactory时,首先定义一个Resource来定位容器使用的BeanDefinition.这是使用的是ClassPathResource,意味着Spring会在类路径中去寻找以文件形式存在的BeanDefinition的信息. ClassPathResource res =new ClassPathResource('beans.xml'); 这里定义的Resource不能由DefaultListableBeanFactory直接使用,Sp

【spring源码分析】IOC容器初始化(一)

前言:spring主要就是对bean进行管理,因此IOC容器的初始化过程非常重要,搞清楚其原理不管在实际生产或面试过程中都十分的有用.在[spring源码分析]准备工作中已经搭建好spring的环境,并利用xml配置形式对类进行了实例化.在test代码中有一个非常关键的类ClassPathXmlApplicationContext,在这个类中实现了IOC容器的初始化,因此我们从ClassPathXmlApplicationContext入手开始研究IOC的初始化过程. 1.ClassPathXm

Spring容器初始化

问:Spring容器.SpringIOC是什么? 那么Spring容器到底是什么东西呢,长什么样子呢?为什么感觉像是哆啦A梦的百宝箱,什么东西都能拿出来? 所以本文针对以上问题对一个简单的说明, 1.首先我们整个过程中要保持一个概念,容器中的Bean要经历以下步骤带着这个思想去看就会好理解一些: 2.来个简单的例子 ??:XML方式定义Bean <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=