代碼
vector ivec;
for (size_t i=0; i!=10; ++i) {
ivec.push_back(i);
ivec.push_back(i);
}
multiset miset(ivec.cbegin(), ivec.cend());
cout << miset.size(); // 輸出 0?
排查
- 確認
ivec.size() 是否真為 20。在構造 multiset 前打印 ivec.size()。
- 檢查是否誤用了
ivec.cbegin() 等於 ivec.cend()(向量為空)。
- 編譯器版本/標準庫實現差極少導致此問題,極大概率是
ivec 未正確填充。
驗證代碼
#include
#include
#include
int main() {
std::vector ivec;
for (size_t i=0; i!=10; ++i) {
ivec.push_back(i);
ivec.push_back(i);
}
std::cout << "ivec size: " << ivec.size() << "\n"; // 應為 20
std::multiset miset(ivec.cbegin(), ivec.cend());
std::cout << "miset size: " << miset.size() << "\n"; // 應為 20
return 0;
}