我是初学者,我想在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中编写这段代码?
答案 0 :(得分:4)
在C ++中,如果我们想要一个可以向运行时添加值并在运行时扩展的值容器,我们使用std::vector
。正如您所看到的,它恰如其分地命名。 matlab行v=[v;A(i)];
将A
与v
的值相连,相当于使用std::vector::push_back
函数:v.push_back(A[i]);
。
答案 1 :(得分:2)
标准C ++库有一个类std::vector
,如其中一条注释所示。 vector
类没有预定义的大小;在添加成员对象时,向量的大小会动态增长。一般来说,阅读有关标准C ++库和特别是vector的文章可能是值得的。
答案 2 :(得分:0)
以下代码可用于定义未定义大小的矢量。
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);
阅读这些功能及其用法的详细信息。