我是初学者,希望能够在cpp中编写一个循环,其中向量的大小由if函数确定,但具体大小未知。 基本上我想将这个MATLAB代码转换为cpp代码:
v(1)=A(1);
for i=2:length(A)
if (abs((A(i)-v))>10^(-5))
v=[v;A(i)];
end
end
在代码中很明显可以看出,在循环开始前并没有确定变量 v 的大小,那么我该如何用cpp来编写这段代码呢?
在C++中,如果我们想要一个可以添加值并且在运行时扩展的值容器,我们使用std::vector
。正如您所看到的,它的命名非常贴切。Matlab代码行v=[v;A(i)];
将来自A
的值与v
连接起来,等同于使用std::vector::push_back
函数:v.push_back(A[i]);
。
std::vector
,正如其中一条评论所指出的那样。 vector
类没有预定义的大小; 随着您添加成员对象,向量的大小会动态增长。可能值得阅读有关标准C ++库和特定于向量的内容。vector<string> v;
<string>
,您需要以下标头文件:#include<string>
完成上述步骤后,您可以使用push_back()
函数将元素推入如下所示-
v.push_back('a');
v.push_back('b');
v.push_back('c');
v.push_back('c');
还有一些其他有用的向量函数,你可以了解一下-
front();
back();
begin();
end();
rbegin();
rend();
max_size();
capacity();
resize();
empty();
at(n);
阅读这些函数及其使用的详细信息。
v
有第二个元素时,A(i)-v
的维度不匹配。你是想用v(end)
还是A(i-1)
? - paddy