C++模板与STL七日斩:从工业编程到高效数据管理(工业项目)

embedded/2025/2/26 9:24:19/

模板如何提升工业代码复用性

实战项目:创建通用【工业设备容器】模板类

  • 类模板的定义与实例化
  • 模板参数默认值 
#include <iostream>
#include <string>
using namespace std;template <typename T = string>
class IndustrialContainer {
private:T data;
public:IndustrialContainer(T d) : data(d) {}void display() {cout << "当前存储:" << data << endl;}
};int main() {IndustrialContainer<int> ic1(100);  // 存储整型(如设备ID)IndustrialContainer<> ic2("温度传感器"); // 使用默认string类型ic1.display();  // 输出:当前存储:100ic2.display();  // 输出:当前存储:温度传感器return 0;
}

vector在设备管理中的实战技巧

实战项目:模拟工业设备管理

  • vector的增删改查
  • 迭代器的遍历
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;class Device {
public:string name;int id;Device(string n, int i) : name(n), id(i) {}
};int main() {vector<Device> devices;// 添加设备devices.push_back(Device("传感器", 1001));devices.emplace_back("机械臂", 2002); // 更高效的添加方式// 遍历设备(使用迭代器)cout << "=== 设备列表 ===" << endl;for (auto it = devices.begin(); it != devices.end(); ++it) {cout << "ID:" << it->id << " 名称:" << it->name << endl;}// 查找设备(Lambda表达式)int targetId = 2002;auto result = find_if(devices.begin(), devices.end(), [targetId](const Device& d){ return d.id == targetId; });if (result != devices.end()) cout << "找到设备:" << result->name << endl;elsecout << "设备未找到" << endl;return 0;
}

算法模板在工厂模式中的妙用

实战项目:优化工业设备工厂系统

c++实战项目:工业设备工厂系统_通过c++开发制造业项目的源代码-CSDN博客

  • sort():排序
  • find_if:条件查找
  • for_each():遍历操作
#include <vector>
#include <algorithm>// 在原有工厂类中添加模板方法
template <typename T>
class DeviceFactory {
private:vector<T*> devices;
public:void addDevice(T* dev) {devices.push_back(dev);}void showAllDevices() {for_each(devices.begin(), devices.end(), [](T* dev){ dev->displayInfo(); });}
};// 使用示例
int main() {DeviceFactory<IndustrialDevice> factory;factory.addDevice(new Sensor("压力传感器"));factory.addDevice(new RobotArm(8000));factory.showAllDevices();return 0;
}

 


http://www.ppmy.cn/embedded/167231.html

相关文章

算法-数据结构-图-邻接表构建

邻接表的基本概念 顶点&#xff08;Vertex&#xff09;&#xff1a; 图中的每个顶点用一个节点表示。 每个顶点存储一个链表或数组&#xff0c;用于记录与该顶点直接相连的其他顶点。 边&#xff08;Edge&#xff09;&#xff1a; 如果顶点 A 和顶点 B 之间有一条边&#xf…

Windows安装NVIDIA显卡CUDAD调用GPU,适用于部署deepseek r1

显卡、显卡驱动、CUDA之间的关系 显卡&#xff1a;&#xff08;GPU&#xff09;&#xff0c;主流是NVIDIA的GPU&#xff0c;因为深度学习本身需要大量计算。GPU的并行计算能力&#xff0c;在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持&#xff0c;可以不…

QT:paintEvent、QPainter、QPaintDevice

paintEvent 介绍 在 Qt 编程中&#xff0c;paintEvent 是 QWidget 类中的一个非常重要的虚函数&#xff0c;用于处理绘图事件。当一个 QWidget 或其派生类的实例需要进行重绘操作时&#xff0c;Qt 会自动调用该控件的 paintEvent 函数。 触发时机 窗口首次显示&#xff1a;当…

Log | Hugo+PaperMod+Github创建自己的博客网站

0. 友情提示 以上内容是我根据我的博客构建内容中总结&#xff0c;并不是在构建过程中记录的&#xff0c;或许有错误之处&#xff0c;若存在问题&#xff0c;欢迎大家指出&#xff01; 欢迎大家关注我的个人博客网站&#xff1a;YHs Log 1. 引言 Lilian Wengs Log: LilLog 在…

大模型在尿潴留风险预测及围手术期方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的 1.3 研究方法与数据来源 二、大模型预测尿潴留的原理与方法 2.1 相关大模型介绍 2.2 模型构建与训练 2.3 模型评估指标与验证 三、术前尿潴留风险预测及方案制定 3.1 术前风险因素分析 3.2 大模型预测结果分析 3.3 …

【解决idea2024.3.3版本Vue插件报错】

解决idea2024.3.3版本Vue插件报【Vue: TypeError: ctxVars.at is not a function at forEachInterpolationSegment】错 错误关键信息[Vue: TypeError: ctxVars.at is not a function at forEachInterpolationSegment]注&#xff1a;本文中文件路径为我们自己安装idea的实际路径…

数据分析七大步骤

在工作中&#xff0c;我们可能都遭遇过面对一堆数据&#xff0c;费尽心思进行分析&#xff0c;结果却惨不忍睹&#xff0c;仿佛“一顿操作猛如虎&#xff0c;一看结果0:5”。更糟糕的是&#xff0c;有时我们甚至完全找不到数据分析的头绪。 别急&#xff0c;朋友们&#xff01…

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》标准解读

GB 44497-2024《智能网联汽车 自动驾驶数据记录系统》是由工业和信息化部提出并归口的强制性国家标准&#xff0c;由国家市场监督管理总局、国家标准化管理委员会于2024年8月23日批准发布(国家标准公告2024年第18号文)&#xff0c;将于2026年1月1日起实施。标准规定了智能网联汽…