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

news2024/9/21 22:26:11

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);   // error
    std::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; // error
    std::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个元素的vector

std::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会是多少?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我做不到受每个人喜欢

我做不到受每个人喜欢 我想描述一下昨天发生争吵后我个人的观点&#xff0c;希望能够重新呈现出一种积极的态度。 首先&#xff0c;让我简要梳理一下事件的经过&#xff0c;当天我像往常一样去另一个宿舍找人聊天&#xff0c;可能因为说话声音有点大&#xff0c;坐在我后面的那…

GUI设计——PyQt5快速入门

一、学习目标 了解有关GUI界面设计的基本语法能够编写简单的界面设计程序 二、PyQt5 安装与环境配置 首先&#xff0c;本人通过网上的教程&#xff0c;在Index of / (qt.io)官网上下载好了 Qt Designer 和 Qt Creator 。本人下载的版本为 5.14。随后&#xff0c;通过网络的资源…

【Spring Cloud Alibaba】seata分布式事务官方入门案例(实战版)

文章目录 1. 业务介绍1.1. 用例1.2. 架构图1.3. 3个服务的代码及业务逻辑&#xff08;略&#xff09; 2. SEATA 的分布式交易解决方案3. 由Dubbo SEATA提供支持的示例&#xff08;实战&#xff09;3.1. 步骤 1&#xff1a;建立数据库&#xff0c;如seata数据库3.2. 步骤 2&…

OSPF基础实验

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

Andriod学习笔记(二)

页面设计的零碎知识 通用属性设置文本大小设置视图宽高设置视图的对齐方式 页面布局LinearLayoutRelativeLayoutGridLayoutScollView 按钮触控ButtonImageViewImageButton 通用属性 设置文本大小 纯数字的setTextSize方法&#xff0c;内部默认字体单位为sp&#xff0c;sp是An…

Git报错解决

本篇主要汇总在使用 Git 进行提交和拉取文件时&#xff0c;遇到的问题的解决方案&#xff0c;以便下次查找。 1 关于使用Git出现“git Failed to connect to 127.0.0.1 port xxxx: Connection refused”的问题解决方案 1. 问题描述 在使用 git 拉取、提交代码的时候&#xff…

Access,Trunk,Hybrid的一些接触知识以及实验

VLAN基本配置 一、实验目的 1.掌握VLAN基础配置原理&#xff1b; 2.掌握Access接口工作原理及配置&#xff1b; 3.掌握Trunk接口工作原理及配置&#xff1b; 4.掌握Hybrid接口工作原理及配置。 二、实验设备 1.电脑1台&#xff1b; 2.ENSP仿真软件。 三、实验内容及步骤 VLAN( …

Ps:选择主体

“主体”之所以成为主体&#xff0c;因为它是一张图片中最突出或者最应该被关注的区域。 选择主体 Select Subject是 Photoshop 2018 年 1 月版开始增加的命令。Adobe 持续改良此命令的算法&#xff0c;现在不仅具有内容识别功能&#xff0c;而且对毛发区域的处理方式也有大幅改…

周阳老师学习

分布式事务 2、3pc tcc 可靠消息最终一致性 最大努力通知 总结 1&#xff09;最大努力通知VS 可靠消息最终一致性 向上管理 态度 》 能力 沟通 》 抱怨 大局 》 细节 汇报进度 寻求知道 成长答疑 先完成后完美 分布式事务-独立消息服务MQ 追溯业务执行状态的接口…

解决谷歌学术bib信息不全的问题

在我们撰写学术论文时&#xff0c;经常需要引用参考文献。如果用latex撰写论文&#xff0c;势必会用到文献的bib信息&#xff0c;大部分的教程都会告诉我们去google scholar上去搜索。 一、问题描述 搜索一篇文章&#xff0c;然后选择cite&#xff0c;再选择bib。 很明显&…

最详细STM32,cubeMX串口发送,接收数据

这篇文章将详细介绍 串口 发送数据&#xff0c;接受数据。 文章目录 前言一、串口的基础知识二、cubeMX 配置三、自动生成代码解析四、串口发送数据函数五、使用串口收发数据点亮 led重定向函数&#xff1a; 总结 前言 实验开发板&#xff1a;STM32F103C8T6。所需软件&#xf…

c语言用json解析库(jansson)检测字符串是否是json格式的数据

C语言检测字符串是否是json格式的数据&#xff0c;可以用jansson库检测&#xff0c;也可以用cjson库来校验。但是若数据格式有问题&#xff0c;jansson可以指出哪里有错误&#xff0c;cjson无法指出。 下面就演示C语言如何使用jansson库检测字符串是否是json格式的数据。 1.下载…

pow函数

pow函数 pow的翻译是指数表达式 第一个参数为底数&#xff0c;第二个参数为指数 返回值为&#xff1a; 头文件为include <math.h> #include <stdio.h> #include <math.h>int main() {int ret (int)pow(10, 2);printf("%d\n", ret);return 0; }…

算法、语言混编、分布式锁与分布式ID、IO模型

一、算法初识 数据结构和算法是程序的基石。我们使用的所有数据类型就是一种数据结构&#xff08;数据的组织形式&#xff09;&#xff0c;写的程序逻辑就是算法。 算法是指用来操作数据、解决程序问题的一组方法。 对于同一个问题&#xff0c;使用不同的算法&#xff0c;也…

C++笔记之初始化二维矩阵的方法

C笔记之初始化二维矩阵的方法 —— 2023年5月20日 上海 code review! 文章目录 C笔记之初始化二维矩阵的方法一.常见方法1. 使用数组2. 使用向量3. 使用数组的动态分配4. 使用嵌套的 std::vector 并使用resize方法5. 初始化固定大小的 std::array 二.C中使用vector初始化二维矩…

Python基础入门例程3-NP3 读入字符串

描述 小白正在学习Python&#xff0c;从变量输出开始。请使用input函数读入一个字符串&#xff0c;然后将其输出。 输入描述&#xff1a; 输入一行字符串。 输出描述&#xff1a; 将读入的变量输出。 示例1 输入&#xff1a; Nowcoder 复制输出&#xff1a; Nowcoder…

本周技术概要20231016-20231022与生活点滴

本周包了饺子&#xff0c;辣椒油整的也不错&#xff0c;不过包饺子上升的空间还很大。 饺子美照&#xff1a; 一、linux下Qt treeView内存泄漏 当把原来Qt程序由ubuntu 32位的程序迁移到ubuntu 64位时&#xff0c;测试程序发现了内存泄漏问题&#xff0c;经过排查&#xff0c;最…

java版opencv之Javacv各种场景使用案例

文章目录 1.关于Javacv~~2. [官网下载最新OpenCV4.8](https://opencv.org/releases/)&#xff0c;并解压~~ *不一定要安装opencv*~~3. 将opencv的jar包及动态库dll文件引入项目~~4.pom引入javacv库5.测试5.1 图片美颜5.2 图片人脸检测5.3 提取视频中的语音5.4 音视频剪辑5.5 录…

Python基础入门例程2-NP2 多行输出

描述 将字符串 Hello World! 存储到变量str1中&#xff0c;再将字符串 Hello Nowcoder! 存储到变量str2中&#xff0c;再使用print语句将其打印出来&#xff08;一行一个变量&#xff09;。 输入描述&#xff1a; 无 输出描述&#xff1a; 第一行输出字符串Hello World!&a…

N——>BatchSize 数据维度理解和处理(chun, cat, squeeze, unsqueeze)

数据处理之N——>BatchSize N——>batch_size train_data TensorDataset(torch.Tensor(x_train).double(), torch.Tensor(y_train).double()) train_loader DataLoader(train_data, batch_sizeargs.bs, shuffleTrue, drop_lastTrue) for batch_idx, (inputs, results…