2013-02-05 41 views
3

我是一個初學者,我想在cpp中編寫一個循環,其中一個向量具有由if funcion確定的未知大小。 基本上我想這個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

+0

http://www.cplusplus.com/reference/vector/vector/push_back/ – dchhetri

+0

爲什麼你想去找*未定義的*,C++已經足夠了! – iammilind

回答

3

在C++中,如果我們需要一個值的容器,我們可以添加值並在運行時擴展,我們使用std::vector。正如你所看到的,它適合你的目的。連接Av的值的matlab行v=[v;A(i)];相當於使用std::vector::push_back函數:v.push_back(A[i]);

2

標準C++庫有一個類std::vector,如註釋之一所示。 vector類沒有預定義的大小;在添加成員對象時,矢量的大小會動態增長。閱讀一般的標準C++庫和特別的向量可能是值得的。

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); 

閱讀這些功能及其用法的詳細信息。