当前位置: 首页 > news >正文

C++笔记之vector的初始化以及assign()方法

C++笔记之vector的初始化以及assign()方法

—— 2023年4月15日 上海


code review

文章目录

  • C++笔记之vector的初始化以及assign()方法
    • 代码——实践出真知
    • 0. 空的vector
    • 1. 花括号(initializer_list)——最推荐的初始化方法
    • 2. 花括号
    • 3. 圆括号+花括号
    • 4. 圆括号
    • 5. 圆括号
    • 6. 指针+花括号
    • 7. 指针+圆括号
    • 10. 用一个数组特定范围的元素作为vector的初值(通过迭代器产生容器)——重要:
    • 11. 拷贝另一个vector区间内的元素(通过迭代器产生容器)——重要:
    • 8. 拷贝另一个vector——最推荐的初始化方法
    • 9. 把另一个vector压到这个vector中
    • 8和9的区别
    • 12.把yaml中的数组加载到vector中
    • 13.把ros中message的数组赋值给vector
    • 14.赋值或修改一个已经定义的vetor
    • 15.C++的vector使用圆括号初始化和使用花括号初始化有什么区别?
    • 16.assign()
    • 17.一些错误的声明方式
      • 17.1.不能在声明变量的同时调用成员函数。
      • 17.2不能这样声明
    • 18.如果我初始化vector时,只指定大小,不指定元素的value,那么元素的value会是多少?

代码——实践出真知

在这里插入图片描述

运行
在这里插入图片描述

代码

// Example program
#include <iostream>
#include <string>
#include <vector>void Print(std::string v_name, const auto v) {std::cout << v_name << "= ";for (auto &elem : v) {std::cout << elem << " ";}std::cout << std::endl;
}int main() {std::vector<int> v1{1, 2, 3, 4, 5};std::vector<int> v2 = {1, 2, 3, 4, 5};std::vector<int> v3({1, 2, 3, 4, 5});std::vector<int> v4{(1, 2, 3, 4, 5)};std::vector<int> v5(v1);std::vector<int> v6{v1};std::vector<int> v7({v1});std::vector<int> v8{(v1)};std::vector<int> v9 = std::vector<int>({1, 2, 3, 4, 5});std::vector<std::vector<int>> v11{{1, 2, 3, 4, 5}};// std::vector<std::vector<int>> v31({1, 2, 3, 4, 5}); // error// std::vector<std::vector<int>> v41{(1, 2, 3, 4, 5)}; // error// std::vector<std::vector<int>> v51(v1);   // errorstd::vector<std::vector<int>> v61{v1};std::vector<std::vector<int>> v611{{v1}};std::vector<std::vector<int>> v71({v1});std::vector<std::vector<int>> v81{(v1)};Print("v1", v1);Print("v2", v2);Print("v3", v3);Print("v4", v4);Print("v5", v5);Print("v6", v6);Print("v7", v7);Print("v8", v8);Print("v9", v9);std::cout << "v1[0]= " << v1[0] << std::endl;std::cout << "v2[0]= " << v2[0] << std::endl;std::cout << "v3[0]= " << v3[0] << std::endl;std::cout << "v4[0]= " << v4[0] << std::endl;std::cout << "v5[0]= " << v5[0] << std::endl;std::cout << "v6[0]= " << v6[0] << std::endl;std::cout << "v7[0]= " << v7[0] << std::endl;std::cout << "v8[0]= " << v8[0] << std::endl;std::cout << "v9[0]= " << v9[0] << std::endl;std::cout << "v11[0][0] = " << v11[0][0] << std::endl;// std::cout << "v41[0][0] = " << v41[0][0] << std::endl; // errorstd::cout << "v61[0][0] = " << v61[0][0] << std::endl;std::cout << "v611[0][0]= " << v611[0][0] << std::endl;std::cout << "v71[0][0] = " << v71[0][0] << std::endl;std::cout << "v81[0][0] = " << v81[0][0] << std::endl;
}

0. 空的vector

std::vector<int>;

1. 花括号(initializer_list)——最推荐的初始化方法

vector<int> v5{1, 2, 3, 4, 5}; // 创建一个包含1、2、3、4、5的元素的vector

2. 花括号

std::vector<int> myvec={3,4,5};

3. 圆括号+花括号

std::vector<int> myvec({3,4,5});

4. 圆括号

vector<int> v1(5, -1); // 创建一个包含5个值为0的整数的vector

5. 圆括号

vector<int> v2(10); // 创建一个包含10个未初始化元素的vector

6. 指针+花括号

std::vector<int>* p;
p = new vector<int>{ 1,2,3 };

7. 指针+圆括号

std::vector<int>* p;
p = new vector<int>(3,1);

10. 用一个数组特定范围的元素作为vector的初值(通过迭代器产生容器)——重要:

int ia[8]={1,1,2,3,4,5,6,7};
std::vector<int> myvec(ia,ia+8);

11. 拷贝另一个vector区间内的元素(通过迭代器产生容器)——重要:

vector<int> v4(v1.begin(), v1.begin() + 3); // 创建一个包含v1的前3个元素的vectorstd::vector<int> v10(v1.begin(), v1.end()); // 创建一个包含v1的所有元素的vector

8. 拷贝另一个vector——最推荐的初始化方法

vector<int> v3(v1); // 使用v1的元素来创建一个新的vector

9. 把另一个vector压到这个vector中

vector<int> v3{v1}; // 使用v1的元素来创建一个新的vector

8和9的区别

在这里插入图片描述

12.把yaml中的数组加载到vector中

std::vector<std::string> abc= config["father_node"]["child_node_2"].as<std::vector<std::string>>();

13.把ros中message的数组赋值给vector

略!!!

14.赋值或修改一个已经定义的vetor

在这里插入图片描述

15.C++的vector使用圆括号初始化和使用花括号初始化有什么区别?

在这里插入图片描述

16.assign()

std::vector::assign() 函数可以用于将指定的元素分配到 std::vector 中,覆盖原有元素。std::vector::assign() 函数有多个重载形式,可以接受不同类型的参数,下面列出其中的两个常用重载形式:
在这里插入图片描述

17.一些错误的声明方式

17.1.不能在声明变量的同时调用成员函数。

在这里插入图片描述

17.2不能这样声明

在这里插入图片描述

18.如果我初始化vector时,只指定大小,不指定元素的value,那么元素的value会是多少?

在这里插入图片描述

相关文章:

C++笔记之vector的初始化以及assign()方法

C笔记之vector的初始化以及assign()方法 —— 2023年4月15日 上海 code review 文章目录 C笔记之vector的初始化以及assign()方法代码——实践出真知0. 空的vector1. 花括号(initializer_list)——最推荐的初始化方法2. 花括号3. 圆括号花括号4. 圆括号5. 圆括号6. 指针花括号7…...

OSPF基础实验

一、实验拓扑 二、实验要求 1、按照图示配置 IP 地址 2、R1&#xff0c;R2&#xff0c;R3 运行 OSPF 使内网互通&#xff0c;所有接口(公网接口除外)全部宣告进 Area 0; 要求使用环回口作为 Router-id 3、业务网段不允许出现协议报文 4、R5 模拟互联网&#xff0c;内网通过…...

笔记本Charge与Vcore方案

一、笔记本Vcore方案 IMVP8/9:Intel Mobile Voltage Positionin VR12.5:就是指FIVR集成式调压模块(Haswell架构) PMIC:电源管理芯片(Power Management Integrated Circuits) 常见问题分析 1. 不开机,VCORE 短路 : 通常是因为Low side MOS短路造成.量测时可以先将MOS拿…...

error C2632: ‘char‘ followed by ‘char‘ is illegal

error C2632: char followed by char is illegal remove -stdc99...

MySql数据库实现注册登录及个人信息查询的数据库设计

前言: 数据库使用的是mysql 以下创建的表,实现以下功能: 用户1,账号admin,年龄20,关联3件商品 用户2,账号admin2,年龄30,关联2件商品(没有商品和用户1重复) 用户3,账号admin3,年龄50,关联2件商品(这两件商品均是用户1的其中两种) 登录查询对应数据的实现 1.创建用户表Users,并…...

C++-openssl-aes-cbc-pkcs5

PKCS#5填充是PKCS#7填充的一个子集&#xff0c;在PKCS#7填充时BlockSize为8的时候&#xff0c;PKCS#5与PKCS#7填充是一样的&#xff0c;在BlockSize不同时PKCS#5与PKCS#7填充是不同的。 PKCS#5填充是将数据填充到8的倍数&#xff0c; 填充后数据长度的计算公式&#xff1a; 定于…...

一个进程最多可以创建多少个线程基本分析

前言 ​话不多说&#xff0c;先来张脑图~ linux 虚拟内存知识回顾 虚拟内存空间长啥样 在 Linux 操作系统中&#xff0c;虚拟地址空间的内部又被分为内核空间和用户空间两部分&#xff0c;不同位数的系统&#xff0c;地址空间的范围也不同。比如最常见的 32 位和 64 位系统&…...

Swin Transformer V2 Scaling Up Capacity and Resolution(CVPR2022)

文章目录 AbstractIntroduction不稳定性问题下游任务需要的高分辨率问题解决内存问题- Related WorksLanguage networks and scaling upVision networks and scaling upTransferring across window / kernel resolution Swin Transformer V2Swin Transformer简介Scaling Up Mod…...

rust学习——字符串、字符串字面量、切片(slice)、字符串 slice

文章目录 字符串、字符串字面量、切片&#xff08;slice&#xff09;、字符串 slice01、字符串02、字符串字面量03、切片 &#xff08;slice&#xff09;04、字符串 slice 字符串 slice注意要点String 与 &str 的转换字符串深度剖析字符串 slice 作为函数参数例子001例子00…...

SolidWorks模型导入到Gazebo中

首先建立好solidworks模型&#xff0c;然后另存为stl格式&#xff0c; 导出为STL文件时&#xff0c;文件名最好不要是中文&#xff0c;并且要将后缀STL改为stl&#xff0c;否则Gazebo无法识别 这是我创建好的机器人充电桩模型&#xff1a; 尺寸是单位是mm&#xff1a; 135mm …...

使用CMake构建一个简单的C++项目

文章目录 一. 构建一个简单的项目二. 构建过程1. 创建程序源文件2. 编写CMakeList.txt文件3. 构建项目并编译源代码 附件 一. 构建一个简单的项目 最基本的CMake项目是从单个源代码文件构建的可执行文件。对于像这样的简单项目&#xff0c;只需要一个包含三个命令的CMakeLists…...

图论06-【无权无向】-图的遍历并查集Union Find-力扣695为例

文章目录 1. 代码仓库2. 思路2.1 UF变量设计2.2 UF合并两个集合2.3 查找当前顶点的父节点 find(element) 3. 完整代码 1. 代码仓库 https://github.com/Chufeng-Jiang/Graph-Theory 2. 思路 2.1 UF变量设计 parent数组保存着每个节点所指向的父节点的索引&#xff0c;初始值为…...

什么是卷积神经网络?解决了什么问题?

什么是卷积神经网络&#xff1f; 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度神经网络模型&#xff0c;主要用于图像识别、语音识别和自然语言处理等任务。它通过卷积层、池化层和全连接层来实现特征提取和分类。 解决了什么问…...

Golang数组:全面指南与实际示例

揭示Golang数组的威力&#xff1a;从基础到高级技巧 Golang数组是数据存储的基本构建块&#xff0c;为开发人员提供了多种可能性。在这篇正式的博客文章中&#xff0c;我们将探讨Golang数组&#xff0c;从基础知识到高级技巧。通过实际示例和正式的语气&#xff0c;我们将揭示…...

程序连接oracle查询数据的环境配置

连接oracle 数据库真麻烦&#xff0c;还是MySQL方便 Oracle Instant Client 这个东西的版本跟oracle的版本是有讲究的&#xff0c;引用文档的说明 Oracle 标准的客户端-服务器网络互操作性允许不同版本的 Oracle 客户端和 Oracle 数据库之间的连接。有关经过认证的配置&#…...

【BIGRU预测】基于双向门控循环单元的多变量时间序列预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

RDD算子操作(基本算子和常见算子)

目录 一、基本算子 1.map算子 2.flatMap算子 3.filter算子 4.foreach算子 5.saveAsTextFile算子 6.redueceByKey算子 二、常用Transformation算子 1.mapValues算子 2.groupBy算子 3.distinct算子 4.union算子 5.join算子 6.intersection算子 7.glom算子 8.groupByKey算…...

互联网Java工程师面试题·Java 面试篇·第五弹

目录 79、适配器模式和装饰器模式有什么区别&#xff1f; 80、适配器模式和代理模式之前有什么不同&#xff1f; 81、什么是模板方法模式&#xff1f; 82、什么时候使用访问者模式&#xff1f; 83、什么时候使用组合模式&#xff1f; 84、继承和组合之间有什么不同&#…...

常见的测试理论面试问题

请解释软件生存周期是什么&#xff1f; 软件生存周期是指从软件开发到维护的过程&#xff0c;包括可行性研究、需求分析、软件设计、编码、测试、发布和维护等活动。这个过程也被称为“生命周期模型”。 软件测试的目的是什么&#xff1f; 软件测试的目的是发现软件中的错误…...

把JS中的map方法玩出花来

一 map是什么 map(callbackFn) map(callbackFn, thisArg)map() 方法是一个迭代方法。它为数组中的每个元素调用一次提供的 callbackFn 函数&#xff0c;并用结果构建一个新数组。 参数 callbackFn 数组中的每个元素执行的函数。它的返回值作为一个元素被添加为新数组中。该…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...