我是新來的C++和嘗試理解向量,我的要求是比較兩個向量中的每個索引的值。比較兩個向量的元素
下面是一個適用於陣列而不是標準的矢量類,陣列的大小可通過
mySize = sizeof(array)/sizeof(int);
for(int i = 0;i<mySize;i++)
{
if(a[i] == b[i])
{
std::cout <<": Match ";
}
else
{
std::cout <<":Doesnt Match" ;
}
}
但同時IAM試圖使用矢量計算出的僞碼,它不是簡單
1.基於範圍的循環適用於上述場景嗎? 2.如何獲得向量的大小,下面的代碼實際上是顯示出比我創建了額外的內存, 可能的std ::向量獸醫默認的意見後,分配額外的空間
std::vector<int> vec;
vec.push_back(-10);
vec.push_back(-20);
vec.push_back(-20);
vec.push_back(-20);
vec.push_back(-20);
for (int i=0;i<sizeof(vec);i++)
{
std::cout<<vec[i]<<"\t";
}
output :
10 -20 -20 -20 -20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
代碼更新
std::vector<int> vec;
vec.push_back(-10);
vec.push_back(-20);
vec.push_back(-20);
vec.push_back(-20);
vec.push_back(-20)
std::vector<int> vec1;
vec1.push_back(-20);
vec1.push_back(-20);
vec1.push_back(-20);
vec1.push_back(-20);
for (int i=0;i<vec.size();i++)
{
if(vec[i] == vec1[i])
{
std::cout<<vec[i]<<"\t"<<vec1[i]<<": Match: \n";
}
else {
std::cout<<vec[i]<<"\t"<<vec1[i]<<":Doesnt Match: \n";
}
}
輸出
-10 -20:Doesnt Match:
-20 -20: Match:
-20 -20: Match:
-20 -20: Match:
-20 -20: Match:
這裏打印的輸出實際上是錯誤的,因爲我們只需要在第二矢量4層的元件,但輸出顯示它有5個元素。 有何建議?
閱讀文檔。 http://www.cplusplus.com/reference/vector/vector/ – Chris
'if(v1 == v2)'should work。 –
使用'vec.size()'而不是'sizeof(vec)' – DimChtz