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
相关产品推荐
相关产品推荐

