報這個錯時會彈出一個窗口,貌似內存溢出,這是什么由於vector存放的數據超出了vector的大小所造成的。
解決方法如下:
在Vector<string> vector之后,不能直接通過如:
vector[0] = "aa"
vector[1] = "bb"等進行賦值,這樣會導致越界。(下標是修改不是插入,如果要用下標,需要保證初始化時候有足夠的元素,一般用push_back())
首先使用 tagSeq.resize(n) 語句將vector的size調整為初始長度,然后就可以通過以上方式進行賦值了。關鍵是學會借助resize()函數設置容器的初始長度。
另外一種辦法,那就是Vector<string> vector之后,進行調用vector的push_back("aa")方法向vector中添加數據,該方法會自動申請內存,這樣vector的size就可以逐步增加,不會越界。
還有就是在使用容器的時候,很多時候都是根據判斷符合某些條件才往容器中通過push_back()函數添加元素,但是可能到頭來從未有過符合條件的,也就是說並沒有往容器中添加任何一個元素,此時如果通過下標訪問容器如v[n-1]或者通過某些函數訪問容器如v.back()、v.front()等都會出現下標越界的錯誤(內存溢出),因為v中根本沒有存放任何元素,v的長度或者說v.size()等於0,因此類似v[n-1]、v.front()等是沒有意義的,所以會出現錯誤,這是容易忽略的地方。假如非得使用如上述下標訪問或者容器的某些函數,可以先添加一個if的判斷條件if (!v.empty()),即v非空的情況下上述的訪問操作才是可行的。