首页 > 编程语言 >C++ vector 列表初始化

C++ vector 列表初始化

时间:2024-09-18 17:46:28浏览次数:10  
标签:初始化 10 对象 元素 C++ 列表 vector

vector<int> vl(10);      //v1有10 个元素,每个的值都是0
vector<int> v2{10};      //v2有1个元素,该元素的值是 10
vector<int> v3(10,1);   //v3有10个元素,每个的值都是1
vector<int> v4{10,1};   //v4有2个元素,值分别是10和1

如果初始化时使用了花括号的形式但是提供的值又不能用来列表初始化,就要考虑用这样的值来构造 vector 对象了。例如,要想列表初始化一个含有 string 对象的 vector 对象,应该提供能赋给 string 对象的初值。此时不难区分到底是要列表初始化 vector 对象的元素还是用给定的容量值来构造 vector 对象:

vector<string> v5{"hi"};     //列表初始化:v5 有一个元素
vector<string> v6("hi");     //错误:不能使用字符串字面值构建 vector 对象
vector<string> v7{10};       //v7有 10 个默认初始化的元素
vector<string> v8{10,"hi"}; //v8有10个值为"hi"的元素

尽管在上面的例子中除了第二条语句之外都用了花括号,但其实只有 v5 是列表初始化。要想列表初始化 vector 对象,花括号里的值必须与元素类型相同。显然不能用 int 初始化 string 对象,所以 v7 和 v8 提供的值不能作为元素的初始值。确认无法执行列表初始化后,编译器会尝试用默认值初始化 vector 对象。




《C++ Primer》 P90

标签:初始化,10,对象,元素,C++,列表,vector
From: https://www.cnblogs.com/huvjie/p/18418986

相关文章

  • 【C++】多态的认识和理解
    个人主页文章目录⭐一、多态的概念......
  • C++浮点数半精度与单精度的相互转换
    代码//单精度转半精度unsignedshortcpu_float2half(floatf){unsignedshortret;unsignedx=*((int*)(void*)(&f));unsignedu=(x&0x7fffffff),remainder,shift,lsb,lsb_s1,lsb_m1;unsignedsign,exponent,mantissa;//Getrid......
  • C++14的一些新特性
    记录一些C++14的一些特性: 函数返回值类型推导:C++14对函数返回类型推导规则做了优化:#include<iostream>usingnamespacestd;autofunc(inti){returni;}intmain(){cout<<func(4)<<endl;return0;}返回值类型推导也可以用在模板中:#include......
  • Rust中的&运算符取一个变量的地址与C/C++中意义相同么?如果不同又有什么区别呢?
    Rust中的&运算符与C/C++中的&运算符有相似之处,但它们的行为和作用有一些关键区别,特别是在所有权、内存安全和编译期检查方面。1.相似之处在Rust和C/C++中,&运算符都用于获取变量的地址,即生成一个指针或引用。它们的作用可以概括为:将一个值的引用或地址作为结果,而不......
  • C++中一般指针,指针数组,数组指针
    凤凰台上凤凰游,凤去台空江自流。吴宫花草埋幽径,晋代衣冠成古丘。三山半落青天外,二水中分白鹭洲。总为浮云能蔽日,长安不见使人愁。                            ——《登金陵凤凰台》【唐】李白 今天是中秋节,小......
  • C++11的一些特性
    记录一下使用过的C++11的一些特性,大致分为三部分:并发相关,智能指针相关,chrono。 并发相关:std::thread相关:#include<iostream>#include<thread>usingnamespacestd;intmain(){autofunc=[](){for(inti=0;i<10;++i){cout<<i<......
  • 3D高斯渲染 (1-3)ros下 接受c++节点发送的位姿,python节点渲染图像返回,同步版本
    基础学习3D高斯渲染(1-2)ros下接受c++节点发送的位姿,python节点渲染图像返回https://www.cnblogs.com/gooutlook/p/18385485ros自定义消息(图像+标志位+位姿)python和c++发布和接受https://www.cnblogs.com/gooutlook/p/18412553 本工程代码为什么要做这个,因为之前的版本......
  • c++ 找到给定点集的简单闭合路径(Find Simple Closed Path for a given set of points)
    给定一组点,将这些点连接起来而不相交例子: 输入:points[]={(0,3),(1,1),(2,2),(4,4),          (0,0),(1,2),(3,1},{3,3}};输出:按以下顺序连接点将    不造成任何交叉    {(0,0),(3,1),(1,1),(2,2),(3,3),......
  • C++信奥老师解一本通题 1164:digit函数
    ​【题目描述】在程序中定义一函数digit(n,k),它能分离出整数n从右边数第k个数字。【输入】正整数n和k。【输出】一个数字。【输入样例】318593【输出样例】8#include<iostream>usingnamespacestd;intdigit(longlongn,intk){ if(k==1) returnn%10......
  • C++信奥老师解一本通题 1369:合并果子(fruit)
    ​【题目描述】在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n−1次合并之后,就只剩下一堆了。多多在合并......