2.c++常见的特殊语法情况

1.const数据类型和constexpr的运用

       const定义的值不能被改变,在整个作用域中都保持固定,当然,可以通过函数以形参的形式输入函数。代码如下:

#include <iostream>
using namespace std;constexpr int fibonacci(const int n) {return n == 1 || n == 2 ? 1 : fibonacci(n - 1) + fibonacci(n - 2);
}int foo(int i) {return i;
}int mains() {const int n = 10;int num = 10;num += 1;  //1.num值可以修改//n+=1  //2.n值不可以修改,会报错cout<<fibonacci(n)<<endl;  //3.n可以以形参的形式在函数内参与计算// 4,5为数组的定义,数组的长度必须为常数int num1[fibonacci(n)+1];//4.这种传入正确//5.int num2[foo(2)];这种传入错误,程序会报错return 0;
}

2.vector数据类型

参考博客vector类型介绍-CSDN博客。

标准库:集合或动态数组,我们可以放若干对象放在里面。vector他能把其他对象装进来,也被称为容器.如

(1)vector<int> vjihe; // 表示这个集合对象保存的是int型数据;  // <int>:模板,vector本身就是个类模板,<int>实际上就是类模板的实例化过程。

(2)vector<student> vstudlist;// 存放学生类型的集合;

(3)vector<vector<string>> strchuan; // 相当于二维的字符串;

(4)vector<int *> vjihe2 // 不能向集合中装引用;

(5)vector<int &> vjihe3; // 引用知识一个别名,不是对象;

(6)vector<string> mystr; // 创建一个string类型的空的集合;

        //push_back()         

        mystr.push_back(“abc”);        

         mystr.push_back(“efg”);

(7)元素拷贝

        vector<string> mystr2(mystr); // 将mystr元素拷贝给mystr2vector<string> mystr3 = mystr; // 将mystr元素拷贝给mystr3

(8)用列表初始化方法给值,用{}括起来

        vector<string> mystr4 = {“aaa”,”bbb”,”ccc”};

(9)创建指定数量的元素

vector<int> ijihe(15,-200);// 创建15个int类型的元素,每个元素的值为-200
vector<string> sjihe(15,”hello”);// 创建15个int类型的元素,每个元素的值为hello
vector<int> ijihe2(15); // 15个元素,每一个元素值默认为0
vector<string> sjihe(15); // 15个元素,每一个元素值默认为空

  等等,代码如下:

#include <iostream>
#include <vector>
using namespace std;int main2() {vector<int> vec = { 1,2,3,4 };vec.push_back(1);//在vec后面添加一个元素int nums = vec.size();//返回vec元素的个数for (int i = 0; i < nums; i++) {cout << vec[i] << endl;//打印vec的元素}cout << 1 << endl;return 0;

3.初始化列表

        c++11首先是把初始化列表的概念绑定到类型上,并将其称之为initializer_list,允许构造函数或者其他函数像参数一样使用初始化列表,这就为类对象的初始化与普通数组和POD的初始化方法提供了统一的桥梁。下面是由类写的代码如下:

#include <initializer_list>
#include <vector>
#include <iostream>
using namespace std;//建立一个类
class Mag {public:vector<int> vec;Mag(initializer_list<int> list) {//使用auto关键字进行类推导for (auto it = list.begin(); it != list.end(); ++it) {vec.push_back(*it);}}};int mainc() {cout << ".............classes start..............." << endl;Mag mag = {1,2,3,4,5};cout << "mag: ";for (auto it = mag.vec.begin(); it != mag.vec.end(); ++it) {cout << *it << ", ";}cout << endl;return 0;
}

4.auto通过元组存取不同类型的数据

代码如下(tuple和auto的作用在代码中有解释):

#include <iostream>
#include <tuple>
#include <string>
using namespace std;tuple<int,double,string> f() {   //元组返回不同类型的数return make_tuple(1,2.3,"456");
}int maint() {cout << "..................tuple................." << endl;auto tp = f();//返回一个元组,auto自动给元组的各元素分配数据类型cout << get<0>(tp) << "  " << get<1>(tp) << "  " << get<2>(tp) << endl;//元组的输出元素return 0;
}

5.带参数的类的构造函数

代码如下:

#include <iostream>
using namespace std;//类1
class Base {public:int value1;int value2=2;Base(int value) {value1 = value;}
};//类2
class Line {public:void setLength(double len);double getlength(void);Line();//构造函数
private:double length;};//成员函数定义,包括构造函数
Line::Line(void) {cout << "Object is being created!!!" << endl;
}void Line::setLength(double len) {length = len;
}double Line::getlength(void) {return length;
}int maino() {//类1Base b(3);cout << b.value2 << endl;cout << b.value1 << endl;//类2Line line;line.setLength(6.0);cout << line.getlength() << endl;return 0;
}

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

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

相关文章

【算法刷题day24】Leetcode:77. 组合

文章目录 Leetcode 77. 组合解题思路代码总结 草稿图网站 java的Deque Leetcode 77. 组合 题目&#xff1a;77. 组合 解析&#xff1a;代码随想录解析 解题思路 递归三部曲&#xff1a;递归函数的返回值以及参数&#xff1b;回溯函数终止条件&#xff1b;单层搜索的过程 代码…

Docker 镜像推送到docker hub

查看容器 #sudo docker ps -a commit容器为镜像 $ sudo docker commit d7b5e8d56a75 ubuntu_pytorch39_v4 #sha256: ********** 查看镜像信息 $ sudo docker images 登录 docker hub $ sudo docker login --username用户名 registry.cn-beijing.aliyuncs.com #密码 为…

AIGC的崛起:定义未来内容创作的新纪元

&#x1f31f;文章目录 &#x1f31f;AIGC简介&#x1f31f; AIGC的相关技术与特点&#x1f31f;AIGC有哪些应用场景&#xff1f;&#x1f31f;AIGC对其他行业影响&#x1f31f;面临的挑战与问题&#x1f31f;AIGC未来发展 &#x1f31f;AIGC十大热门网站推荐&#xff1a; 文心…

华为OD-C卷-按身高和体重排队[100分]

题目描述 某学校举行运动会&#xff0c;学生们按编号(1、2、3…n)进行标识&#xff0c;现需要按照身高由低到高排列&#xff0c;对身高相同的人&#xff0c;按体重由轻到重排列&#xff1b;对于身高体重都相同的人&#xff0c;维持原有的编号顺序关系。请输出排列后的学生编号…

芯科科技xG26系列产品为多协议无线设备性能树立新标准

提供业界最高容量的闪存、RAM和GPIO组合&#xff0c;支持Matter over Thread 2024年4月9日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;&#xff0c…

Java基础知识(包装类和Math类)

包装类 1.包装类的定义 包装类是将基本数据类型转换为对象&#xff0c;满足了Java的面向对象编程 2.包装类的作用 2.1方便与对象的操作 2.2提供了一系列实用的方法 2.3使用集合泛型存储基本数据类型数据时必须使用包装类型 2.4当作参数传递 3.包装类的对应 Java有8种基本…

.NET ManagedThreadId用法

在.NET中&#xff0c;ManagedThreadId 是一个属性&#xff0c;它属于 System.Threading.Thread 类。这个属性用于获取当前托管线程的唯一标识符。在.NET应用程序中&#xff0c;当你需要识别或跟踪特定的线程时&#xff0c;ManagedThreadId 可以非常有用。 下面是一些使用 Mana…

先过我这一关 - signal

先过我这一关 - signal 在运行程序的时候&#xff0c;一般都知道运行 CtrlC 八成就会把程序给中断&#xff0c;类似于应用程序里面的CLOSE &#xff0c;但是如果有些数据在运行过程中没有保存&#xff0c;就会比较尴尬&#xff0c;此时就需要借助signal同学&#xff0c;让他对…

Transformer详细介绍

目录 前言 一、背景 传统序列模型的问题 Transformer的动机 二、组成部分 自注意力机制&#xff08;Self-Attention&#xff09; 编码器和解码器 位置编码 前馈神经网络 三、训练和推理 训练过程 推理过程 四、应用 自然语言处理任务 图像处理和其他领域 BERT和…

吴恩达机器学习-实践实验室:协同过滤推荐系统(Collaborative Filtering Recommender Systems)

在本练习中&#xff0c;您将实现协作过滤&#xff0c;以构建电影推荐系统。 文章目录 1-概念2-推荐系统3-电影评分数据集4-协作过滤学习算法4.1协同过滤成本函数 5-学习电影推荐6-建议7-祝贺 软件包 我们将使用现在熟悉的NumPy和Tensorflow软件包。 import numpy as np import…

调用nltk分词库时出现nltk_data Error loading averaged_perceptron_tagger问题的解决办法

问题描述&#xff1a;运行时出现[nltk_data] Error loading averaged_perceptron_tagger&#xff0c;Name or service not known问题&#xff0c;详见下图。 由于这个问题最近总是困扰开发和调试工作&#xff0c;因此将彻底的解决办法记录如下&#xff0c;如下设置好就不需要漫…

【数据结构】07查找

查找 1. 基本概念2. 顺序表查找2.1 顺序查找2.2 顺序查找优化-哨兵 3. 有序表查找3.1 折半查找&#xff08;二分查找&#xff09; 4. 分块查找&#xff08;索引顺序查找&#xff09;5. Hash表&#xff08;散列表&#xff09;5.1 散列函数的设计5.2 代码实现5.2.1 初始化Hash表5…

netcat检测工具

1.下载&#xff1a; windows下载地址&#xff1a;netcat-windows linux下载地址&#xff1a;netcat-linux 2. 安装&#xff1a; windows&#xff1a;打开上方链接下载后解压至桌面即可 centos&#xff1a; ① 可以使用yum install nc -y安装 ② 也可以打开上方链接下载rpm包…

装修后快速入住指南,除甲醛的10个小妙招。福州中宅装饰,福州装修

装修后除甲醛的方法有很多种&#xff0c;以下是一些常见的方法&#xff1a; 1. 通风 通风是最基本的除甲醛方法之一&#xff0c;打开窗户让空气流通&#xff0c;可以将室内的甲醛排出。可以在早晨和晚上空气质量较好的时候进行通风。 2. 植物吸收 一些植物如吊兰、常春藤、虎…

李廉洋;4.13黄金,原油最新资讯,下周一盘走势分析及策略。

美国杜克大学大宗商品研究教授Harvey表示&#xff0c;目前除了避险情绪外&#xff0c;“上涨惯性”也是促使黄金“疯涨”的原因。他表示&#xff1a;“目前不断涌入黄金市场的资金实际上在增加风险敞口&#xff0c;除了散户&#xff0c;对冲基金和其他机构投资者也加入了黄金热…

MongoDB 按照某个字段分组,并按照分组的记录数降序排列

以下是一个示例查询&#xff1a; db.collection.aggregate([{$group: {_id: "$quoteId", // 按照quoteId字段进行分组count: { $sum: 1 } // 统计每个分组的记录数}},{$sort: {count: -1 // 按照记录数降序排序}} ]) 在这个查询中&#xff1a; $group阶段将文档按照q…

黑龙江等保测评Linux服务器的三种配置 IP方法

方法一&#xff1a;使用nmcli命令 说明&#xff1a; 使用nmcli命令配置的网络配置可以立即生效且系统重启后配置也不会丢失。 nmcli介绍 nmcli是NetworkManager的一个命令行工具&#xff0c;它提供了使用命令行配置由NetworkManager管理网络连接的方法。nmcli命令的基本格式为…

vue 百度地图 使用 vue-baidu-map 进行当前位置定位和范围展示

vue 百度地图 使用 vue-baidu-map 进行当前位置定位和范围展示&#xff08;考勤打卡&#xff09; 一、创建百度地图账号&#xff0c;获取秘钥二、 引入插件1、安装vue-baidu-map2、在main.js中引入 三、 简单使用 最近写项目的时候&#xff0c;做到了考勤打卡的模块内容&#x…

LeetCode 2923. 找到冠军 I——每日一题

上一篇博客&#xff1a;为什么忘记密码要重置密码而不是直接告诉你密码&#xff1f; 写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;htt…

pbootcms百度推广链接打不开显示404错误页面

PbootCMS官方在2023年4月21日的版本更新中&#xff08;对应V3.2.5版本&#xff09;&#xff0c;对URL参数添加了如下判断 if(stripos(URL,?) ! false && stripos(URL,/?tag) false && stripos(URL,/?page) false && stripos(URL,/?ext_) false…