如何定义一个大小未定义的向量

5

我是初学者,希望能够在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来编写这段代码呢?


1
std::vector怎么样? - thang
http://www.cplusplus.com/reference/vector/vector/push_back/ - dchhetri
为什么你想要去做一些“未定义”的事情,C++已经有足够的东西了! - iammilind
v有第二个元素时,A(i)-v的维度不匹配。你是想用v(end)还是A(i-1) - paddy
3个回答

5

在C++中,如果我们想要一个可以添加值并且在运行时扩展的值容器,我们使用std::vector。正如您所看到的,它的命名非常贴切。Matlab代码行v=[v;A(i)];将来自A的值与v连接起来,等同于使用std::vector::push_back函数:v.push_back(A[i]);


2
标准C++库中有一个类std::vector,正如其中一条评论所指出的那样。 vector类没有预定义的大小; 随着您添加成员对象,向量的大小会动态增长。可能值得阅读有关标准C ++库和特定于向量的内容。

1
以下代码可用于定义大小未定义的向量。
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);

阅读这些函数及其使用的详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接