C++ 如何设置由另一个变量指定的不确定数量的变量
好吧,我知道这听起来可能令人困惑——我是一个新的编程理念。 我有一个CNC项目,它将从文本文件中获取值,分配值,然后通过串行连接将值传输到Arduino,Arduino将接收并驱动电机,等等C++ 如何设置由另一个变量指定的不确定数量的变量,c++,variables,cnc,indefinite,C++,Variables,Cnc,Indefinite,好吧,我知道这听起来可能令人困惑——我是一个新的编程理念。 我有一个CNC项目,它将从文本文件中获取值,分配值,然后通过串行连接将值传输到Arduino,Arduino将接收并驱动电机,等等 for( std::string line; getline( input, line ); ) { int x, y; input >> x >> y; } 但是,我希望程序能够处理任意长度的文本文件——任意数量的坐标。在界面中,我正在设计一个入口面板,允许用户指定命令的数量。
for( std::string line; getline( input, line ); )
{
int x, y;
input >> x >> y;
}
但是,我希望程序能够处理任意长度的文本文件——任意数量的坐标。在界面中,我正在设计一个入口面板,允许用户指定命令的数量。但是,我如何引入代码来接受那么多的命令并引入那么多的变量呢?我知道我可以通过为每个X、Y、Z
和其他命令类型创建1000
变量来强制执行此操作,并且最多可以执行1000
行处理,但如果有代码实现这一点并为我进行调整,效率会更高
例如,我让文本输入框输出一个指定为
NumberOfCommands
的值。我如何告诉程序创建大量的X轴、Y轴和Z轴
(以及其他串行)命令,其中这些命令的数量等于NumberOfCommands
?您可以使用std::vector
类来存储任意数量的元素
因此,在您的情况下,类似这样的情况:
struct Coordinate {
int x,y,z;
};
std::vector<Coordinate> coords;
for( std::string line; getline( input, line ); )
{
Coordinate coord;
input >> coord.x >> coord.y >> coord.z;
coords.push_back(coord);
}
emplace\u back
不像push\u back
那样创建副本,而是创建元素并将其放入向量中。您可以使用std::vector
类来存储任意数量的元素
因此,在您的情况下,类似这样的情况:
struct Coordinate {
int x,y,z;
};
std::vector<Coordinate> coords;
for( std::string line; getline( input, line ); )
{
Coordinate coord;
input >> coord.x >> coord.y >> coord.z;
coords.push_back(coord);
}
emplace\u back
不像push\u back
那样制作副本,它创建元素并将其放入向量中。您可以使用动态调整大小的数组
例如:
问题是x
来自哪里?您可以假设为1000,并在填充数组时保持计数。然后,如果获得的信息超过该大小,则可以调整阵列的大小
或者,您可以从一个实体开始,比如STL
向量
,您可以使用动态调整大小的数组
例如:
问题是x
来自哪里?您可以假设为1000,并在填充数组时保持计数。然后,如果获得的信息超过该大小,则可以调整阵列的大小
或者你可以从一个实体开始,比如STL <代码>向量
你可能想找到一个关于“代码> STD::vector < /代码>的现在。你可能想找到一个关于代码<> STD::vector < /C> >现在。这是C++,不是C。请不要建议使用数组,特别是结合裸指针:这是最好的方法。这是C++,而不是C。请不要建议使用数组,特别是结合裸指针:这是最好的方法。现在,在X(x),y(y),z(z)的形式中;括号中的x/y/z是否为数字?也就是说,我可以在代码序列中做记号吗?为第四组坐标写(x(4))?副命题中的x
是传递给构造函数的参数x
,它是emplace\u back
的第一个参数。paradensis之外的x
是成员变量x
。当您将其发送到serial.write
时,您将执行serial.write(coords[0].x)
来发送第0个元素的x
成员。现在,以x(x)、y(y)、z(z)的形式;括号中的x/y/z是否为数字?也就是说,我可以在代码序列中做记号吗?为第四组坐标写(x(4))?副命题中的x
是传递给构造函数的参数x
,它是emplace\u back
的第一个参数。paradensis之外的x
是成员变量x
。当您将其发送到serial.write
时,您将执行serial.write(coords[0].x)
发送第0个元素的x
成员。
int *myArray; //Declare pointer to type of array
myArray = new int[x]; //use 'new' to create array of size x
myArray[3] = 10; //Use as normal (static) array
...
delete [] myArrray; //remember to free memory when finished.