2012-05-04 12 views
2

我正在嘗試向矢量中添加一個新項目,並移動其餘項目。我怎樣才能做到這一點 ?向量矢量中添加一個新項目並將其剩餘部分向右移動

防爆

vector ------------------------------------------------------- 
     | 1 | 2 | 3 | 4 | 5 | 9 | 10 | 15 | 21 | 34 | 56 | 99 | 
     ------------------------------------------------------- 
            ^
new item = 14, it should be added to^

After insertion, 


vector ------------------------------------------------------------ 
     | 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 21 | 34 | 56 | 99 | 
     ------------------------------------------------------------ 
             ^      ^
             ^-shifted to right by one-^ 
+0

我假設你正在使用'std :: vector'。我會看看'insert()'函數。你想創建自己的矢量類嗎? – linuxuser27

+0

我正在使用std :: vector – compi

回答

5

檢查vector::insert()函數。

vector<int> vec ; 

// Add elements to vec 
vec.insert(vec.begin() + position, new_item); 
+0

感謝您添加鏈接。我會刪除我的答案。 – linuxuser27

+0

請勿使用cplucplus。看看http://programmers.stackexchange.com/questions/88241/whats-wrong-with-cplusplus-com – compi

+0

備用參考可以在[cppreference.com]找到(http://en.cppreference.com/w/cpp/container/vector/insert)(或[語言標準](http://www.iso.org/iso/iso_cattailue/catalogue_ics/catalogue_detail_ics.htm?csnumber=50372)或類似的[草案標準](http ://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf) - 參見[委員會網站](http://www.open-std.org/jtc1/ SC22/WG21 /))。 – Mankarse

1

使用insert

vector<int> v {1,2,3,5}; 
v.insert (v.begin() + 3, 4); //v is now {1,2,3,4,5} 

您還可以插入元素範圍和其他很酷的東西,類似於矢量構造函數。

0

如果你不知道你想插入的確切位置,那麼vec.insert()不會工作的很好。

vec.push_back(15); 
std::sort(vec.begin(), vec.end()); 
相關問題