首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ multiset 初始化 size 為 0:檢查源向量 ivec 是否為空

     編輯:程式設計綜合問答

代碼


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?

排查

  1. 確認 ivec.size() 是否真為 20。在構造 multiset 前打印 ivec.size()。
  2. 檢查是否誤用了 ivec.cbegin() 等於 ivec.cend()(向量為空)。
  3. 編譯器版本/標準庫實現差極少導致此問題,極大概率是 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;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved