1、vector中嵌套一个vector容器,来表示一个二维数组
#include
#include
#include
#include
using namespace std;
void Test01()
{
vector> v;
// 创建小容器
vector v1;
vector v2;
vector v3;
vector v4;
// 向小容器中添加数据
for (int i = 0; i < 4; i++)
{
v1.push_back(i + 1);
v2.push_back(i + 2);
v3.push_back(i + 3);
v4.push_back(i + 4);
}
// 将小容器中数据加入到大容器中
v.push_back(v1);
v.push_back(v2);
v.push_back(v3);
v.push_back(v4);
// 通过大容器将所有的数据进行遍历
for (vector>::iterator it = v.begin(); it != v.end(); it++)
{
for (vector::iterator it2 = (*it).begin(); it2 != (*it).end(); it2++)
{
cout << (*it2) << " ";
}
cout << endl;
}
}
int main() {
Test01();
cin.get();
}
1、vector用来创建动态数组对象,其相当于一个容器。
vector不是一个类,而是一个类模板。用vector定义动态数组的形式为 :
vector<元素类型> 数组对象名(数组长度) //数组长度可有可无。
vector array; //创建一维整型数组对象array
vector> test //创建二维整型数组对象test
2、vector中常见应用
array.size() // array数组的长度值。
test[0].size() //二维数组第一行的列数
array.push_back(num) //在数组array尾部添加数据num
array.pop_back() //去掉数组的最后一个数据。
array.empty() //判断array数组是否为空
array.clear() //清空array数组
array[k] //访问数组的元素array[k]的值
test[i][j] //访问二维数组的元素test[i][j]
3、vector的用法实例
#include
#include
using namespace std;
int main(){
vector test0 ;
vector> test1 ; //test1为整型的二维数组。
//vector> test2 ;
int a1[]={1,2,3,4}, a2[]={5,6,7,8}, a3[]={9,10,11,12} ;
test0.push_back(100) ;
test0.push_back(200) ;
test0.push_back(300) ;
//test0.size()为test0数组的长度值。
cout<<"The number of test0 is "<(a1,a1+3)表示取动态数组a1[]中的前三个数据。
* 在下面这段代码中是分别将a1[],a2[]数组的前三个数据,存放
* 到二维数组test1中作为其第一,第二行的数据。
*/
test1.push_back(vector(a1,a1+3));
test1.push_back(vector (a2,a2+3));
cout<<"the vector of test1 is :"<
1、在多维数组中,用 sort 函数排序时,默认是按每一维的首元素进行升序的排序。
2、可以指定按照每一维数组的第几个元素来进行排序。
3、可以指定按多个条件进行排序。
#include
#include
#include
#include
using namespace std;
// 指定按每维数组的第二个元素进行升序排序
bool cmp(vector v1, vectorv2)
{
return v1[1] < v2[1];
}
void PrintVal(const vector>& res)
{
for (auto &i : res)
{
for (int j : i)
{
cout << j << " ";
}
cout << endl;
}
}
int main()
{
vector> res = { {2,5},{1,8},{0,2},{9,6} };
cout << "原二数组为:\n";
PrintVal(res);
cout << endl;
//默认按每维数组升序排列
sort(res.begin(), res.end());
cout << "按默认规则排序为:\n";
PrintVal(res);
cout << endl;
//按指定规则排序
sort(res.begin(), res.end(),cmp);
cout << "按指定规则排序为:\n";
PrintVal(res);
cout << endl;
system("pause");
return 0;
}
参考资料:
[1] C++ 中vector的使用方法
[2] c++中vector的用法详解
[3] C++ vector 实现二维数组