关于vector创建的二维数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于vector创建的二维数组相关的知识,希望对你有一定的参考价值。
怎样在一个vector创建的二维数组中查找和删除指定的元素啊
我要用vector建一个5×5的矩阵,元素是A~Z除开Q,该怎么做呢
LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t
按“列优先顺序”存储时,地址计算为:
LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t
存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节
二维数组又称为矩阵,行列数相等的矩阵称变方阵。对称矩阵a[i][j] = a[j][i],对角矩阵:n阶方阵主对角线外都是零元素.
转置矩阵
//其中A, B是m*n矩阵:
void tramat(matrix A,matrix B) int i,j;
for(i=0; i<m; i++)
for(j=0;j<n;j++)
B[j]=A[j];
矩阵相加
//其中A,B,C是m*n矩阵:
void addmat(matrix C, matrix A, matrix B)
int i, j;
for(i=0; i<m; i++)
for(j=0;j<n;j++)
c[j] = A[j] + B[j];
矩阵相乘
//其中A是m*n矩阵,B是n*1矩阵,C为m*1矩阵
void mutmat(matrix C, matrix A, matrix B)
int i, j, k;
for(i=0; i<m; i++)
for(j=0; j<i; j++)
C[j]=0;
for(k=0; k<n; k++)
C[j] = C[j] + A[k] * B[k][j];
C++动态二维数组:
以整形为例,row为行数,col为列数
int **data;//存储二维数组的指针(指向指针的指针。date=x[0][0]的地址。这样标会更好。因为sizeof(date)结果为4不可能存下二维数组)
//以下实现如何申请内存
data = new int *[row];
for (int k = 0; k < row; k++)
data[k] = new int[col];
//赋值跟普通二维数组一样 例如
data[0][0] = 5; //将二维数组1行1列(C++中称为0行0列)赋值为5
//删除内存
for (int i = 0 ; i < row; ++i)
delete [] data[i]; //此处的[]不可省略
delete [] data; 参考技术A 用两个for就可以查询了.至于删除,把该数组元素用标记符标志就行了
#include "stdio.h"
main()
int vector[5][5]=3,5,9,1,6;
int x,y;
int find=1;
for(x=0;x<5;x++)
for(y=0;y<5;y++)
if(vector[x][y]==find)
printf("要查找的数字在%d行%d列\n",x+1,y+1);vector[x][y]=0;
参考技术B int a[3][3]=1,2,3,4,5,6,7,8,9;
vector<int> v(a[0],a[3]); //二维数组其实存储也是线性的
vector<int>::iterator it;
int item=5; //假如删除5
for(it=v.begin();it!=v.end();it++)
if(* it==item)
v.erase(it);
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
return 0; 参考技术C #include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
int a[3][3]=1,2,3,4,5,6,7,8,9;
vector<int> v(a[0],a[3]); //二维数组其实存储也是线性的
vector<int>::iterator it;
int item=5; //假如删除5
for(it=v.begin();it!=v.end();it++)
if(* it==item)
v.erase(it);
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
return 0;
本回答被提问者采纳
动态创建二维数组
vector创建二维数组 初始化二维数组 vector<vector <int> > ivec(n ,vector<int>(m)); //n*m的二维vector vector<vector <int> > ivec(n , vector<int>(m, 0)); //n*m的二维vector,所有元素为0 动态创建m*n的二维 方法一: vector<vector <int> > ivec; ivec.resize(n); for(int i = 0; i < n; i++) ivec[i].resize(m); 方法二: vector<vector <int> > ivec; ivec.resize(n, vector<int>(m)); 动态创建二维数组a[n][m] C语言版: #include<malloc.h> int **a = (int **)malloc(n *sizeof(int *)); for(int i = 0; i < n; i++) a[i] = (int *)malloc(m *sizeof(int)); C++版: int **a = new int *[n]; for(int i = 0; i < n; i++) a[i] = new int[m];
以上是关于关于vector创建的二维数组的主要内容,如果未能解决你的问题,请参考以下文章