C++ 动态二维数组(二维vector)
生活随笔
收集整理的這篇文章主要介紹了
C++ 动态二维数组(二维vector)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
創建二維數組:
vector<int> vec(4,2); //將含有4個數據的一維動態數組初始為2 vector< vector<int> > asd1(row, vector<int>(column, 0)); //初始化row*column二維動態數組,初始化值為0?
獲取數組長度:
對于一維數組,可以使用size()獲取其長度。 int size = asd.size();對于二維數組,可以使用以下方法獲取行、列的長度。 int size_row = asd1.size();? ? ? ? ? //獲取行數 int size_column = asd1[0].size(); //獲取列數?
賦值
直接賦值即可 asd1[1][1] = 1; cout << asd1[1][1] <<endl;?
增加操作
根據需求,增加操作可分為增加行和增加列。增加行列元素,可以使用vector提供的方法push_back()或insert()。對于增行,可以使用asd1.push_back(asd);,其中asd是vector<int>。對于增加列中的元素,需要指定插入的行,可以使用asd1[0].push_back(23);完成插入操作。使用insert()時,需要使用迭代器才能完成在相應位置的插入操作。
asd1[1].push_back(23); //插入列元素 asd1.push_back(asd); //插入一行?
刪除操作
刪除同樣分為刪除行和刪除列,使用vector中的erase方法完成該操作,erase去除迭代器所指位置的元素。刪除行時,需要使用到第一維度的vector的迭代器:
auto test1 = asd1.begin(); asd1.erase(++test1);刪除列元素時,需要使用第二維度的迭代器:
auto test2 = test1.begin(); asd1[0].erase(++test2);?
查改、遍歷操作
operation[ ]用于訪問指定的元素,返回對指定位置的元素的引用pos。如果只是簡單的獲取數據或查看數據使用a[row][column]即可。
遍歷是一個常用的操作,通過遍歷可以了解數組中是否存在相應的元素。遍歷二維vector中所有的元素方法如下:
void Print(vector<vector<int>> a) {vector<vector<int> >::iterator p1;vector<int>::iterator p2;for (p1 = a.begin(); p1 != a.end(); p1++){for (p2 = p1->begin(); p2 != p1->end(); p2++){cout << "[" << *p2 << "]";}cout <<endl;}cout <<endl; }?
完整代碼:
#include <iostream> #include <array> #include <vector> #include <cstring>using namespace std;void Print(vector<vector<int>> a) {vector<vector<int> >::iterator p1;vector<int>::iterator p2;for (p1 = a.begin(); p1 != a.end(); p1++){for (p2 = p1->begin(); p2 != p1->end(); p2++){cout << "[" << *p2 << "]";}cout <<endl;}cout <<endl; }int main() {int i = 0;vector <int> asd(4,2); //將含有4個數據的一維動態數組初始為2vector<std::vector<int> > asd1(4,vector<int>(4,0)); //初始化row*column二維動態數組,初始化值為0vector<std::vector<int> >::iterator p1;vector <int>::iterator p2;//簡單初始化for (p1 = asd1.begin(); p1 != asd1.end(); p1++){for (p2 = p1->begin(); p2 != p1->end(); p2++){*p2 = i++;}}cout << "Init:" <<endl;Print(asd1);//插入列元素用push_backasd1[1].push_back(23);asd1.push_back(asd);/*//設置行列數int size_row = asd1.size(); //獲取行數cout << "size_row:" << size_row <<endl;asd1.resize(10); //設置行數size_row = asd1.size(); //獲取行數cout << "size_row:" << size_row <<endl;int size_col = asd1[0].size();cout << "size_col:" << size_col <<endl;asd1[1].resize(10); //設置列數size_col = asd1[1].size();cout << "size_col:" << size_col <<endl;*/cout << "Push_back:" <<endl;Print(asd1);cout << "Erase:" <<endl;auto test1 = asd1.begin();test1 = test1 + 3;asd1.erase(test1);Print(asd1);return 0; }總結
以上是生活随笔為你收集整理的C++ 动态二维数组(二维vector)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ unordered_map 使用
- 下一篇: C++ deque 底层原理及 queu