本文记录了对C++中的vector容器的简单操作,包括给vector添加元素、按指定列排序、取值。
尖山网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。1,数组转vector
double ptProjected[4] = {1.1, 1.2, 1.3, 5.0};
vectorvecProjected(ptProjected, ptProjected + sizeof(ptProjected) / sizeof(double));
2,vector转数组
由于vector内部的数据是存放在连续的存储空间,vector转数组事实上只需要获取vector中第一个数据的地址和数据的长度即可。如果仅仅是传参,无需任何操作,直接传地址即可,如果要进行数据复制,可以借用内存拷贝函数“memcpy”。例如:
double *buffer = new double [sizeof(arrHeight)];
if (!vecHeight.empty())
{memcpy(buffer, &vecHeight[0], vecHeight.size()*sizeof(double));
}
如图所示,红框内是原始数组,蓝框内是根据第四列数字从小到大排序后的数组。
#include "stdafx.h"
#include#include
#includeusing namespace std;
int main() {vectora = {1,5,8,1 };
vectorb = {7,8,3,3 };
vectorc = {4,6,5,2 };
vectord = {4,6,5,0 };
//普通数组转换为vector数组
double ptProjected[4] = {1.1, 1.2, 1.3, 5.0};
vectorvecProjected(ptProjected, ptProjected + sizeof(ptProjected) / sizeof(double));
//将一维数组加入二维数组中
vector< vector>vecTest;
vecTest.push_back(a);
vecTest.push_back(b);
vecTest.push_back(c);
vecTest.push_back(d);
vecTest.push_back(vecProjected);
//排序所用到的列的维度,本例子根据第4列排序
int dimension = 3;
//根据第4列排序
sort(vecTest.begin(), vecTest.end(), [&dimension](vector&a, vector&b) {return a[dimension]>b[dimension];
});
//打印排序后的数组
for (auto item : vecTest) {for (auto num : item) { cout<< num<< "\t";
}
cout<< endl;
}
system("pause");
return 0;
}
三、删除二维 vector 数组最后一列数据如图所示,红色框内数组是4列,蓝框内是删除了最后一列的数组。
//接上一节代码
//删除最后一个元素
vector< vector>result;
for (auto pVoxel : test) {pVoxel.pop_back();
result.push_back(pVoxel);
}
//打印删除最后一个元素后的result数组
for (auto item : result) {for (auto num : item) { cout<< num<< "\t";
}
cout<< endl;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧