基于c++,定数据结构,支持快速取数据,按行号取一整行数据,按列号取一整列数据
时间: 2023-08-11 07:40:35 浏览: 77
为了支持快速取数据、按行号取一整行数据、按列号取一整列数据,我们可以使用二维数组来存储数据。同时,为了能够快速地按行号或列号取数据,我们可以使用一些辅助数据结构来实现。
以下是一个使用二维数组来存储数据,并且支持快速取数据、按行号取一整行数据、按列号取一整列数据的示例代码:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAX_ROW = 1000; // 最大行数
const int MAX_COL = 1000; // 最大列数
class Matrix {
public:
Matrix(int row, int col): m_row(row), m_col(col) {
m_data.resize(row);
for (int i = 0; i < row; i++) {
m_data[i].resize(col);
}
}
int get(int row, int col) {
return m_data[row][col];
}
void set(int row, int col, int val) {
m_data[row][col] = val;
}
vector<int> getRow(int row) {
vector<int> res;
for (int j = 0; j < m_col; j++) {
res.push_back(m_data[row][j]);
}
return res;
}
vector<int> getCol(int col) {
vector<int> res;
for (int i = 0; i < m_row; i++) {
res.push_back(m_data[i][col]);
}
return res;
}
private:
int m_row;
int m_col;
vector<vector<int>> m_data;
};
int main() {
// 创建一个 3 行 4 列的矩阵,初始值都为 0
Matrix mat(3, 4);
// 设置第 0 行第 1 列的值为 2
mat.set(0, 1, 2);
// 获取第 0 行第 1 列的值
int val = mat.get(0, 1);
cout << "val=" << val << endl;
// 获取第 1 行的所有值
vector<int> row1 = mat.getRow(1);
for (int i = 0; i < row1.size(); i++) {
cout << row1[i] << " ";
}
cout << endl;
// 获取第 2 列的所有值
vector<int> col2 = mat.getCol(2);
for (int i = 0; i < col2.size(); i++) {
cout << col2[i] << " ";
}
cout << endl;
return 0;
}
```
在这个示例代码中,我们使用二维向量来存储矩阵数据。其中,get方法用于获取指定位置的数据;set方法用于设置指定位置的数据;getRow方法用于获取指定行的所有数据;getCol方法用于获取指定列的所有数据。
阅读全文