vector的注意點

2021-10-17 08:25:59 字數 1258 閱讀 9328

vector是stl中的序列型容器,好用,看作是變長陣列。但是使用它需要注意幾點

想了一會不知道用什麼標題來形容接下來的觀點。

#include

#include

using

namespace std;

intmain()

上述**段定義了乙個vector容器ans,並嘗試直接將ans[0]賦值為9,這是不可以的,因為當前只是定義了乙個vector,其長度為0。

//定義乙個vector,輸出其長度

#include

#include

using

namespace std;

intmain()

//執行結果

0

其僅僅是被定義,其中還沒有元素,不可以直接通過陣列下標的方式進行賦值訪問。

乙個好玩的地方是,將上述**中的輸出ans的大小,修改為輸出ans的大小減去1;

#include

#include

using

namespace std;

intmain()

//執行結果

04294967295

可以看到,剛定義了乙個vector,還沒有賦值,其長度為0,但是其長度減1並不是-1,而是4位元組無符號整數的最大值,這是因為,容器的大小為無符號數,其最高位被解釋為資料位。

#include

#include

using

namespace std;

intmain()

//執行結果00

0000

0000

也就是說,定義乙個vector時,若是同時定義了大小x,則預設其內部【0,x-1】位置處的元素都為0,即陣列中已經有了元素了,不再是空的了。

又是忘記這點可能會導致想不到的錯誤。

說的是,今天在做題118. 楊輝三角時,使用了乙個二維vector,即vector>ans,但是在使用ans時,卻提示編譯出錯,原來,ans已經有了ans與ans,還沒有ans,ans本身是乙個vector陣列,即ans【i】為乙個vector。

怎麼辦,可以這樣:ans已經有了ans與ans,如果想在ans中新增元素,必須先申請ans,只需要ans.push_back({}),這樣ans便有了ans,只不過此時ans為空的vector,但是可以往裡面使用push_back()新增元素了。即ans.push_back(888)。

vector的使用要注意

最近寫乙個併發的伺服器程式,乙個伺服器監聽多個埠.多個客戶端連線.這麼多監聽的socket,想到用socket儲存.自己寫了乙個類簡單封裝了底層的socket.在寫類的時候為了能正常用vector,必須要寫類的拷貝建構函式和過載等號運算子.但是在執行的時候select總是出現10038錯誤,這個錯誤...

vector 注意事項

最近寫乙個入門級別的聊天室程式的時候 用到動態分配空間,第一聯想到的就是vector容器 但是客戶端連線的時候經常出崩潰的現象 經過排查,原來是傳遞了容器指標!查資料才知道,當新增新的資料進去的時候 vector容器在重新分配空間時它會做這樣的動作 首先,vector 會申請一塊更大的記憶體塊 然後...

ExecuteNonQuery 的注意點

最近忙個專案,在查詢某個表中是否有資料的時候,我用了executenonquery 並通過判斷值是否大於0來判斷資料的存在與否。結果與我所設想的很不一致,除錯時才發現,其執行後返回的結果是 1,對此我很是不理解,回頭查了下資料,如下顯示 sqlcommand.executenonquery 方法對連...