You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++如何像Python一样向列表中添加数值?附泊车传感器测距代码

在C++中存储多次测距值(类似Python列表的实现)

嘿,作为同时啃Python和C的新手,这种跨语言的思维转换太有共鸣了!Python的列表用起来顺手得很,C里其实有对应的容器——std::vector,它就是你要找的“动态列表”。

下面给你修改代码,一步步实现把每次的测距值存起来:

步骤1:引入必要的头文件

首先要包含vector的头文件,不然编译器不认识这个容器:

#include <vector>

步骤2:定义一个vector容器

在你的代码开头(比如函数内部),定义一个用来存测距值的vector。因为你的d是经过计算的距离值,用int或者double都可以,这里假设用int:

std::vector<int> distances; // 就像Python里的 distances = []

步骤3:在循环中添加每次的测量值

每次计算出d之后,用push_back()方法把值添加到vector里,这和Python的append()是一个意思:

for (int i=0; i<20; i++) { // 这里最好把i的类型明确为int哦
    digitalWrite(TRIG1, LOW);
    delay(2);
    digitalWrite(TRIG1, HIGH);
    delay(10);
    digitalWrite(TRIG1, LOW);
    int d = pulseIn(ECHO1, HIGH); // 也明确d的类型
    d = d/58;
    distances.push_back(d); // 把当前的d添加到vector里,不会被覆盖啦!
    delay(13);
}

步骤4:如何访问存储的数值

循环结束后,你可以像遍历Python列表一样遍历这个vector:

// 方式1:用下标访问,和Python的 distances[i] 一样
for (int i = 0; i < distances.size(); i++) {
    // 比如打印每个值
    Serial.print("第");
    Serial.print(i+1);
    Serial.print("次测量值:");
    Serial.println(distances[i]);
}

// 方式2:用范围for循环(C++11及以上支持,更简洁)
for (int distance : distances) {
    Serial.println(distance);
}

这样每次的测量值就都被存起来啦,不会像之前那样被覆盖掉。本质上std::vector就是C++里的动态数组,和Python列表的用法非常接近,只是语法上有一点点区别~

内容的提问来源于stack exchange,提问作者Vitesze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:30:17