1:error:“placeholders”: 具有該名稱的命名空間不存在
原因:沒有寫上包含該命名空間的頭檔案:#include<functional>
2::error:vector subscript out of range
vector<string> vector1;//定義之後,不能直接通過下面的方式指派,這樣會導緻越界
vector[0] = "aa";
vector[1] = "bb";
方法一:
首先使用 tagSeq.resize(n) 語句将vector的size調整為初始
長度,然後就可以通過以上方式進行指派了。
方法二:
還有另外一種辦法,那就是vector<string> vector之後,進行調用vector的push_back("aa")方法向vector中
添加資料,該方法會自動申請記憶體,這樣vector的size就可以逐漸增加,不會越界。
推薦方法二。
3: fatal error LNK1168: 無法打開 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\C++primer\Debug\C++primer.exe 進行寫入
原因:上次編譯生成的界面未關掉,關掉黑框即可
4:error:vector iterator not dereferencable
此處
vector<int> list1;
for (it1; it1 != map1.end();++it1)//it1為首疊代器
{
list1.push_back(it1->second);
}
vector<int>::iterator it2 = list1.begin();//定義疊疊代器一定要記得初始化!!!
cout<<*it2;
和:
vector<int> list1;
vector<int>::iterator it2 = list1.begin();//定義疊疊代器一定要記得初始化!!!
for (it1; it1 != map1.end();++it1)
{
list1.push_back(it1->second);
}
cout<<*it2;
兩個程式運作一下就知道,之前的vector還沒有被初始化,此時使用begin()疊代器肯定是吹出問題的。
這種問題1:越界,[begin,end),左閉合區間 2:未初始化,調用無意義 3:list等疊代器也可能會出現這種問題,一樣處理。
5:error:map/set iterator not dereferencable
原因:在使用疊代器時,遞增操作之後其指向就變了,再用就不正确了,檢視你的疊代器有沒有在循環中或别處修改過
6:error :無法從“std::_Vector_iterator<_Ty,_Alloc>”為“std::reverse_iterator<_RanIt>”
原因:疊代器未初始化就開始使用了,檢查下代碼中的疊代器定義之處是否初始化
7:error:map/set iterator not incrementable
原因:在接下來的周遊中使用了已經被釋放掉的疊代器,于是悲劇發生了
8::error C2248: “std::unique_ptr<_Ty>::unique_ptr”: 無法通路 private 成員(在“std::unique_ptr<_Ty>”類中聲明)
原因:unique_ptr不能拷貝和指派
9:error:不能将參數 1 從“const char [12]”轉換為“std::string &”
原因:注意C風格字元串和string的差別,可以用string("字元串")來解決
10:system("pause");的含義,暫停黑視窗
system() 是調用系統指令;
pause 暫停指令;
在進行Visual Studio 下的C/C++程式設計的時候,在運作程式檢視輸出效果時,會出現視窗閃一下就關閉的情況。
在C語言中一般通過添加getchar();
在C++中一般在main函數中的return之前添加system("pause");這樣就可以看清楚輸出的結果,pause會輸出"請按任意鍵繼續.