回答
假設v
成爲您std::vector<int>
載體和0
是積極的,你只需要循環載體和存儲在一個向量正數和負數的其他:
using std::vector;
vector<int> pos, neg;
for (vector<int>::const_iterator it = v.cbegin(); it != v.cend(); it++) {
if ((*it) >= 0) pos.push_back((*it));
else neg.push_back((*it));
}
一個std::vector<int>::const_iterator
在這裏,因爲使用你不需要修改任何意義上的原始矢量,你只需要閱讀它的值。
非常感謝,這正是我一直在尋找的。 :) –
@ H'H告訴我,這個問題/解決方案有什麼難的?說真的,我對什麼是不明顯的感興趣。檢查數字是正面還是負面?或者是什麼? (也許是迭代器,但是然後你恢復到大小和下標,或者可怕的話,你閱讀文檔...) – 2013-07-05 11:51:02
@ H2CO3,因爲我說我是新的C++,我不知道這個迭代器和push_back .. ..不是你的專家,我問一些明顯的問題.... –
如果你可以重新排列你的源向量項目,它可能是最容易做的是這樣的:
auto part = std::partition(input.begin(), input.end(), [](int p) { return p < 0; });
std::vector<int> neg(input.begin(), part);
std::vector<int> pos(part, input.end());
不錯,雖然OP可能會驚訝於在正整數容器中發現'0':) – juanchopanza
非常整潔的解決方案,確實如此。 – 2013-07-05 11:52:32
@juanchopanza:他可能。由於他沒有說出如何處理零,我猜他實際上是指負數和非負數(儘管我可能應該明確說明)。 –
下面是使用std::partition_copy標準庫中的另一個解決方案:
std::vector<int> src, neg, pos;
std::partition_copy(
src.begin(), src.end(),
back_inserter(neg),
back_inserter(pos),
[](int value){ return value < 0; }
);
這會變得更好。 – 2013-07-05 11:53:15
我不禁要+1。不是因爲我認爲這是一個很好的解決方案,而是因爲我剛剛發現'partition_copy':D –
肯定是+1 *,因爲它是一個很好的解決方案。雖然我應該添加一個註釋,該函數是在C++ 11中引入的(但是答案中使用的lambda也是如此)。 –
一@ Shos的答案變化,涉及較少的指針,可能更易於閱讀:
using std::vector;
vector<int> pos, neg;
for (auto& el : v)
{
if (el >= 0)
pos.push_back(el);
else
neg.push_back(el);
}
- 1. 計算向量中正向和負向運行的次數
- 2. 正向負向&&負向正向負向基地
- 3. 使負數正向 - XSLT
- 4. 存儲向量的結構
- 5. 在結構向量的結構向量圖中存儲數據
- 6. 正常化具有負值的向量
- 7. 存儲反轉數據的向量
- 8. 檢索存儲在向量
- 9. 外部存儲器向量
- 10. 索引負向索引的std ::向量
- 11. 如何在向量中存儲多個類的不同對象?
- 12. 向量和字符串結構的向量不正確打印
- 13. 如何在向量中存儲數據?
- 14. 向量將不會存儲正確的數據類型(wchar_t,而不是uint16_t)
- 15. 優化存儲動態大小的向量的向量
- 16. 存儲術語向量是參數「存儲」必需的嗎?
- 17. hgweb:向不同的用戶顯示不同的儲存庫?
- 18. 更新存儲在映射向量的向量
- 19. 存儲在單個向量中的三角形鄰接矩陣的正向和反向索引
- 20. 使Python切片正常(正向/正向+無向+負向索引+範圍內)
- 21. Route 53指向不同s3存儲桶的不同路徑
- 22. 連接正向和反向矢量
- 23. R:如何存儲矢量向量
- 24. 在單個條形圖中同時顯示負向和正向水平
- 25. 比較不同的向量
- 26. 將不同類型的數據存儲到向量中<char>?
- 27. 存儲負數
- 28. bin /不同長度的數字向量
- 29. 負長度向量是不允許
- 30. 爲什麼kiss_fft的正向和反向基4計算不同?
這裏的基本解決方案很簡單,如果你知道語言,那麼你可以試着更具體地說明你正在努力的部分和/或迄今爲止嘗試過的部分嗎? –
你能告訴我們你已經做了什麼 – Alexis
你爲什麼覺得這需要一個基於矢量的解決方案? – Craig