C++ push_back()函數(shù)使用詳解
最近在學(xué)習(xí)Opencv,用C++寫程序,做了一個虛擬畫筆的項目,即通過攝像頭采集視頻圖像信息,識別視頻中的畫筆,并畫筆在空中的劃痕顯示在視頻圖像上。在進(jìn)行到劃痕顯示的,由于視頻是實時采集的,檢測到的畫筆位置坐標(biāo)會不斷更新,但是現(xiàn)在需要將劃痕留在視頻圖像上。
經(jīng)過查閱,push_back()函數(shù)可以實現(xiàn)這個功能,首先他存在于vector頭文件中,顯然和vector有關(guān),其功能是為指定vector容器尾部添加數(shù)據(jù),并且該vector的容量隨壓入數(shù)據(jù)不斷擴(kuò)大,新壓入數(shù)據(jù)和舊數(shù)據(jù)共存不會溢出。為了更加形象地了解其功能,用C++編寫了一段簡單的測試代碼,建立一個vector并將大小為10的數(shù)組數(shù)據(jù)利用push_back()逐個壓入其中,具體代碼如下:
#include <iostream> #include <string> #include <vector> using namespace std ; int main(int argc, char const *argv[]) { vector<char> str; char str_push[10] = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' ,'h' , 'i' , 'j'}; while(true) { for (int i = 0 ; i < 10 ; i++ ) { str.push_back(str_push[i]) ; cout<<"size of str is : "<<str.size()<<endl<<"date of str is : " ; for (int j = 0; j < str.size(); j++) { cout<<str.at(j)<<" , " ; } cout<<endl ; } return 0; } }
運行結(jié)果:
可以看出,str隨著數(shù)據(jù)不斷壓入容量也跟著不斷擴(kuò)大。利用push_back()函數(shù)繼續(xù)實現(xiàn)開始提到的劃痕顯示,建立一個vector容器用于存儲畫筆坐標(biāo)點數(shù)據(jù),push_back()函數(shù)將不斷更新的坐標(biāo)數(shù)據(jù)壓入該容器中,即可實現(xiàn)劃痕停留顯示。最終顯示效果如下:
可以忽略這個背景。。。
到此這篇關(guān)于C++ push_back()函數(shù)使用詳解的文章就介紹到這了,更多相關(guān)C++ push_back()函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實現(xiàn)獲取IP、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS等本機(jī)網(wǎng)絡(luò)參數(shù)的方法
這篇文章主要介紹了C++實現(xiàn)獲取IP、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS等本機(jī)網(wǎng)絡(luò)參數(shù)的方法,需要的朋友可以參考下2014-07-07Visual Studio C++指針靠前靠后的問題全面解析
這篇文章主要介紹了Visual Studio C++指針靠前靠后的問題全面解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04C++?分割字符串?dāng)?shù)據(jù)的實現(xiàn)方法
這篇文章主要介紹了C++?分割字符串?dāng)?shù)據(jù)的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09