上位机图像处理和嵌入式模块部署(树莓派4b和c++新版本的问题)

news2024/11/20 9:27:42

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        自己读书的时候是03年,学习c++也是差不多04年开始,到现在基本上20年了。这20年过程当中,其实c++的语言版本一直是在迭代当中的。早期的c++迭代还比较慢,但是11年之后,可能是与时俱进的需要,c++引入了很多其他语言的特性。对于这些新特性,使用上面一般自己还是比较偏保守的。但是,至少对coder来说,能够看懂别人的代码还是很重要的。

        这一段时间学习树莓派4b,安装和移植了不少软件,也开始对c++新版本有了一些体会和认识。这里正好总结一下。

1、添加了新的头文件

        编译过程中,发现新版本的c++,添加了好多不认识的头文件,比如说#include <filesystem>。一开始的时候,编译提示找不到,后来才知道,新版本的c++才有这个头文件。遇到这种情况,要么自己重写一下函数,要么update一下gcc的版本。

2、lamda函数

        之前lamda函数只是在其他语言中看到过,比如python、javascript等等。现在c++也有了自己的lamda函数,大家把它看成是函数指针就可以了。

auto compare = [](int a, int b) ->int {return a > b ? a : b;};
int result = compare(1,2);

3、auto变量的使用

        有的时候,不确定变量的类型,直接用auto代替了。看似是一个一劳永逸的做法。

4、循环的修改

        之前的c++循环,和c语言差不多,一般都是for、while和do while。现在c++的循环改了一下,添加了一种冒号的形式。

int data[] = { 1,2,3,4,5 };
for (auto val : data)
{
	std::cout << val << std::endl;
}

5、类里面模板的声明

        新式的c++语法,特别是类里面的定义,猛一看上去,还以为有语法错误,其实也是一种新添加的声明格式。

class demo
{
public:
	demo() {}
	~demo() {}

	template<typename t>
	t compare(t a, t b)
	{
		return a > b ? a : b;
	}
};

void process()
{
	demo d;
	auto result = d.template compare<int>(2, 1);
	std::cout << result << std::endl;
}

        这段示例代码里面,最神奇的就是这个d.template,一开始看的时候都以为是代码bug呢。

6、缺省模板

        缺省模板其实老早就有,只不过平时看得少。真的见多了,才知道是什么含义,

template <typename T>
 T compare(T a, T b)
{
	 return a > b ? a : b;
}

template <>
int compare(int a, int b)
{
	if (a == 0 || b == 0)
	{
		assert(0);
	}

	return -1;
}

7、直接用stl创建多线程

        之前我们不管是windows,还是linux,创建多线程的时候,都是用的os api函数。不过最新的c++标准里面,对应的stl已经可以支持多线程编写了。

#include <iostream>
#include <vector>
#include <thread>

void threadFunction(int threadID) 
{
	std::cout << "Thread " << threadID << " is executing." << std::endl;
}

int demo() 
{
	std::vector<std::thread> threads;

	for (int i = 0; i < 5; ++i) 
	{
		threads.push_back(std::thread(threadFunction, i)); 
	}

	for (auto& thread : threads) 
	{
		thread.join();
	}

	std::cout << "All threads have finished execution." << std::endl;
	return 0;
}

8、namespace的嵌套

        还有一个印象比较深刻的内容,就是namespace的嵌套,比如像这样,这是之前没有看到过的,居然也可以编译通过,

namespace A::B::C
{
};

总结:

        实际遇到的c++新特性还是蛮多的,大部分都能猜到它的意思是什么。是在理解不了的,一般也是通过搜索引擎,或者chatgpt review一下,看看是怎么一个情况。平时看到的时候,注意积累一下,没必要专门去学。至少保证自己可以学会、看懂,这就已经很好了。

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

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

相关文章

队列 (Queue)

今日励志语句&#xff1a;别总听悲伤的歌&#xff0c;别总想从前的事&#xff0c;别让过去拖住脚&#xff0c;别让未来被辜负。 前言&#xff1a;前面写了一篇 栈的实现&#xff0c;接下来学习一下它的"兄弟" 一、队列的概念&#xff1a; 队列&#xff1a; 也是数据…

nginx代理原理(端口复用)探究

前言&#xff1a;对于一些常用的插件&#xff0c;我们应该学会如何使用。同时&#xff0c;其实现原理也要进行深究&#xff0c;可以为其他的项目开发做借鉴。 探究方案&#xff1a; 一、发布两个不同的服务&#xff0c;这两个服务的端口不致 二、配置nginx&#xff0c;让这两…

JavaScript百炼成仙自学笔记——13

函数七重关之六&#xff08;“new”一个函数&#xff09; 看个代码&#xff1a; function hello(){console.log(this); } 1、this&#xff1a;也是JavaScript中的一个关键字&#xff0c;永远指向当前函数的调用者 解释一下,有两层意思&#xff1a; ①this要嘛不出现&#…

从心理学角度看,GPT 对人有什么影响?

开启个性化AI体验&#xff1a;深入了解GPT的无限可能 导言 GPT 与我们日常生活的融合标志着技术进步的重大飞跃&#xff0c;为提高效率和创新提供了前所未有的机遇。然而&#xff0c;当我们与这些智能系统日益紧密地交织在一起时&#xff0c;探索它们对个人产生的细微的心理影响…

康姿百德集团公司官网价格统一,产品编码可查真伪售后有保障

康姿百德床垫&#xff0c;静音设计让你享受安静睡眠环境 随着越来越多的人睡眠质量差&#xff0c;夜间难以入睡&#xff0c;人们开始意识到睡眠问题已经不仅仅是健康问题&#xff0c;更上升为一种社会问题&#xff0c;急需得到解决。作为寝具行业中的优质品牌&#xff0c;康姿…

【Linux】如何定位客户端程序的问题

文章目录 1 客户端程序和服务端程序的差别2 问题类型2.1 崩溃(crash)2.2 CPU高2.3 内存高2.4 线程卡死 3 总结 1 客户端程序和服务端程序的差别 客户端程序是运行在终端上&#xff0c;通常都会与业务系统共存&#xff0c;而服务端程序通常会运行在单独的节点上&#xff0c;或者…

Leetcode—394. 字符串解码【中等】

2024每日刷题&#xff08;131&#xff09; Leetcode—394. 字符串解码 实现代码 class Solution { public:string decodeString(string s) {string curstr;int curNum 0;stack<pair<string, int>> st; for(char c: s) {if(isdigit(c)) {curNum curNum * 10 (c…

污水处理设备集中管理

在环境保护日益成为社会发展重中之重的今天&#xff0c;污水处理设备的有效管理显得尤为关键。传统的管理方式往往存在效率低下、响应不及时等问题&#xff0c;难以满足现代污水处理的需求。而HiWoo Cloud平台的污水处理设备集中管理系统&#xff0c;以其高效、智能的特点&…

python代码无法点击进入,如何破???

python代码无法点击进入&#xff0c;如何破&#xff1f;&#xff1f;&#xff1f; 举个栗子&#xff1a; model.chat是无法进入的&#xff0c;这时可以使用如下的命令进行操作&#xff1a; ?model.chat

Linux migrate_type进一步探索

文章接着上回Linux migrate_type初步探索 1、物理页面添加到buddy系统 我们都知道物理内存一开始是由memblock进行分配管理&#xff0c;后面会切换到buddy系统管理。那么接下来我们看一下&#xff0c;memblock管理的物理页面是怎么添加到buddy系统中的。 start_kernel() -&g…

【数据库原理及应用】期末复习汇总高校期末真题试卷06

试卷 一、选择题 1&#xff0e; ________是长期存储在计算机内的有组织,可共享的数据集合. A.数据库管理系统 B.数据库系统 C.数据库 D.文件组织 1&#xff0e; 有12个实体类型&#xff0c;并且它们之间存在15个不同的二元联系&#xff0c;其中4个是1:1联系类型&#xff0c;5…

Ubuntu22.04下安装kafka_2.12-2.6.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1. 将Kafka安装包移到下载目录中 2. 安装Kafka并确保hadoop用户对Kafka目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1. 启动Kafka 2. 测试Kafka是否正常工作 一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro…

javaWeb快速部署到tomcat阿里云服务器

目录 准备 关闭防火墙 配置阿里云安全组 点击控制台 点击导航栏按钮 点击云服务器ECS 点击安全组 点击管理规则 点击手动添加 设置完成 配置web服务 使用yum安装heepd服务 启动httpd服务 查看信息 部署java通过Maven打包好的war包项目 Maven打包项目 上传项目 …

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

科技云报道:从亚运到奥运,大型国际赛事共赴“云端”

科技云报道原创。 “广播电视转播技术拯救了奥运会”前奥委会主席萨马兰奇这句话广为流传。 奥运会、世界杯、亚运会这样的全球大型体育赛事不仅是体育竞技的盛宴&#xff0c;也是商业盛宴&#xff0c;还是技术与人文的融合秀。随着科技的进步&#xff0c;技术在体育赛事中扮…

当前主机使用的磁盘以及带宽情况

今日看到有用户在论坛留言反馈他买了Hostease Linux虚拟主机&#xff0c;想要查看当前主机使用的磁盘以及带宽情况&#xff0c;但是不知道如何查看。因为这边也是对于Hostease的虚拟主机产品是有所了解的&#xff0c;知道他们都是默认带管理面板的操做起来很方便的&#xff0c;…

聊天框 - 微信加载历史数据的效果原来这样实现的

原文&#xff1a;https://juejin.cn/post/7337114587123335180?searchId20240509192958AF7D129567F92AD7E083 公众号&#xff1a;程序员白特&#xff0c;欢迎一起交流学习~ 前言 我记得2021年的时候做过聊天功能&#xff0c;那时业务也只限微信小程序 那时候的心路历程是&am…

流畅的python-学习笔记_前言+第一部分

前言 标准库doctest 测试驱动开发&#xff1a;先写测试&#xff0c;推动开发 obj[key]实际调用实例的__getitem__方法 python数据模型 特殊方法 特殊方法一般自己定义&#xff0c;供py解释器调用&#xff0c;不推荐自己手动调用。 对于py内置类型&#xff0c;调用特殊方…

什么是静态住宅代理IP?

静态住宅代理&#xff08;也称为静态ISP代理&#xff09;是最流行的代理类型之一。它们也是隐藏您的身份并保持在线匿名的最佳方法之一。您为什么要使用住宅代理而不是仅使用常规代理服务&#xff1f;下面我具体分享。 一、什么是静态住宅代理&#xff1f; 首先&#xff0c;我…

986: 哈夫曼译码

解法&#xff1a;先把代码粘贴到编译器&#xff08;vs&#xff09;上&#xff0c;分享一个一键去除空白行的操作&#xff0c;ctrlf调出查找窗口&#xff0c;输入查找(?<\r\n)\r\n&#xff0c;选择正则表达式&#xff0c;替换就可以发现会去掉一百多行空白行。 本题只需要利…