vector<vector<float> > arr;
arr.resize(dat_num+1); //來一幀資料就重新設定容器行數,相當于增加一行;
arr[dat_num].resize(12); //初始化新增加一行的空間
vector<float>a;
for(int j=0;j<12;j++)
a.push_back(dbv1[j]); //將陣列放入容器a中
arr.insert(arr.begin(),a.begin(), a.end()); //將a插入到arr的開頭???
dat_num++;
我想使用vector實作一個未知行數的二維陣列,每呼叫一次就把二維陣列arr增加一行,然后把dbv1這個一維陣列放入到arr[0][i]的第一行,原有資料依次上移,為啥我用arr.insert(arr.begin(),a.begin(), a.end());插入不進去資料,用 arr.push_back(a)插入到最后一列也不行?求大神指點?后面畫圖的時候我用到arr[i][j]的時候發現全是0.
uj5u.com熱心網友回復:
arr.insert(arr.begin(),a);uj5u.com熱心網友回復:
arr.insert(arr.begin(),a);
使用insert和push_back都是增加一行資料
采用resize是預先分配好大小,那么你需要arr[i][j]如此方式賦值
希望對你有幫助
uj5u.com熱心網友回復:
問題確實如你所說,用arr[i][j]可以賦值,那我現在怎么修改能實作insert?我主要是想讓新來的一維陣列插入在二維陣列第一行,純用陣列每次都上移太麻煩。
arr.resize(dat_num+1); //來一幀資料就重新設定容器行數,相當于增加一行;
arr[dat_num].resize(12); //初始化新增加一行的空間
這個不就是分配好大小么?每呼叫一次函式就dat_num++相當于分配出一行來了啊,為啥insert插入一行不行呢?求指點
uj5u.com熱心網友回復:
array2D.resize(num,vector<float>(12));
for(int t=0;t<12;t++)
{
vbv.push_back(bv1[t]);
}
array2D.push_back(vbv);
與下面的有什么區別?
array2D.resize(num,vector<float>(12));
for(int t=0;t<12;t++)
{
array2D[i][t]=bv1[t]; //計算應該放到畫圖程式里面
}
下面這樣確實就可以,我想用array2D.push_back(vbv),應該怎么修改?
uj5u.com熱心網友回復:
resize相當于重新分配了陣列大小。push_back和insert是動態增加一行資料。
如果你要每次插入到第一行。直接
arr.insert(arr.begin(),a); 就OK,無需resize
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74464.html
標籤:C++ 語言
上一篇:日期類的設計與實作
下一篇:C++求助
