Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何设置由另一个变量指定的不确定数量的变量_C++_Variables_Cnc_Indefinite - Fatal编程技术网

C++ 如何设置由另一个变量指定的不确定数量的变量

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; } 但是,我希望程序能够处理任意长度的文本文件——任意数量的坐标。在界面中,我正在设计一个入口面板,允许用户指定命令的数量。

好吧,我知道这听起来可能令人困惑——我是一个新的编程理念。 我有一个CNC项目,它将从文本文件中获取值,分配值,然后通过串行连接将值传输到Arduino,Arduino将接收并驱动电机,等等

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.