簡體   English   中英

如何在vector c ++中將double轉換為int?

[英]How do I convert a double to int in vector c++?

我知道第一個陣列的演員。

std::vector<int> v_int;
std::vector<float> v_float(v_int.begin(), v_int.end());

但是如何轉換第二個數組呢?

vector<int> aCol(4);
vector<vector<int>> a(2, aCol);
vector<vector<double>> b(a.begin(), a.end());// ???

在這種情況下我該怎么辦?

對於編譯器, vector<int>vector<double>是完全不相關的類型,不能隱式地轉換為另一個。 你能做的是:

for(auto&& elem: a)
    b.push_back(std::vector<double>(elem.begin(), elem.end()));
vector<vector<double>> b;
b.reserve(a.size());
for (const auto& elem : a) {
  b.emplace_back(elem.begin(), elem.end());
}

你的矢量矢量構造沒有編譯的原因是因為

vector<vector<double>> b(a.begin(), a.end())

是使用迭代器構造b范圍,其元素類型為vector<int> 這將嘗試用std::vector<int>構造b的內部std::vector<double> ,這不應該是它不應該編譯。

將此與您的第一個示例進行比較,

std::vector<float> v_float(v_int.begin(), v_int.end());

是從元素類型為int迭代器構造v_float范圍。 這是有效的,因為允許從int轉換為float,但不允許從std::vector<int>std::vector<double> (或std::vector<float> )。

您可能希望改為查看循環遍歷a每個元素並推回從abegin()end()構造的向量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM