C++ 动态异形体 2D 数组
c++ dynamic allocatinon 2d array
我想做一个动态分配的二维数组,但我真的不知道该怎么做。我已经搜索了谷歌和所有内容,但就是无法让它工作。到目前为止,我的代码是:
postaH.h:
#ifndef POSTAHH
#define POSTAHH
#include <vector>
#include <string>
#include <iostream>
#include "feladoH.h"
using namespace std;
class postaH : public feladoH{
private:
int szertekek[7];
string szovegek[7];
int a,b;
int** szamosszesit;
string d,c;
string** szovosszesit;
public:
postaH();
postaH(int szertekek[7], string szovegek[7],int,int,string,string);
~postaH();
postaH(postaH& pos);
int getSzertek();
string getSzovegek();
void setSzertek(int ir,int hsz,int szulev, int cir, int chsz,int surg, int suly);
void setSzovegek(string nev,string varos,string utca,string cnev,string cvaros,string cutca,string cstipus);
void hozzaad();
void fajlbakiir();
};
#endif
postaS.cpp:
#include <string>
#include <iostream>
#include <fstream>
#include "postaH.h"
int seged = 0;
using namespace std;
postaH::postaH(){
int szertekek[7];
string szovegek[7];
int** szamosszesit;
string** szovosszesit;
}
postaH::postaH(int szertekek[7], string szovegek[7],int aa,int bb,string dd,string cc) : a(aa),b(bb),d(dd),c(cc){
this->szertekek[7] = szertekek[7];
this->szovegek[7] = szovegek[7];
szamosszesit = new int*[a];
for (int i = 0; i<a; i++){
szamosszesit[i] = new int[b];
}
for (int i = 0; i<a; i++){
for (int j = 0; j<b; j++){
szamosszesit[i][j] = 0;
}
szovosszesit = new string*[d];
for (int i = 0; i<d; i++){
szovosszesit[i] = new string[d];
}
for (int i = 0; i<d; i++){
for (int j = 0; j<c; j++){
szovosszesit[i][j] = 0;
}
}
postaH::~postaH(){
delete [] szertekek;
delete [] szovegek;
for (int i = 0; i<a; i++){
delete [] szamosszesit[i];
}
delete [] szamosszesit;
for (int i = 0; i<d; i++){
delete [] szovosszesit[i];
}
delete [] szovosszesit;
}
postaH::postaH(postaH& pos){
this->szertekek[7] = pos.getSzertek();
this->szovegek[7] = pos.getSzovegek();
}
int postaH::getSzertek(){
return szertekek[7];
}
std::string postaH::getSzovegek(){
return szovegek[7];
}
void postaH::setSzertek(int ir,int hsz,int szulev, int cir, int chsz,int surg, int suly){
this->szertekek[0] = ir;
this->szertekek[1] = hsz;
this->szertekek[2] = szulev;
this->szertekek[3] = cir;
this->szertekek[4] = chsz;
this->szertekek[5] = surg;
this->szertekek[6] = suly;
}
void postaH::setSzovegek(string nev,string varos,string utca,string cnev,string cvaros,string cutca,string cstipus){
this->szovegek[0] = nev;
this->szovegek[1] = varos;
this->szovegek[2] = utca;
this->szovegek[3] = cnev;
this->szovegek[4] = cvaros;
this->szovegek[5] = cutca;
this->szovegek[6] = cstipus;
}
void postaH::hozzaad(){
}
void postaH::fajlbakiir(){
ofstream kezb;
kezb.open ("kezbesitett.txt", ios::app);
for( int i=0;i<7;i++){
kezb << szovegek[i] << ",";
kezb << szertekek[i] << ",";
}
kezb << "n";
kezb.close();
}
所以我的问题基本上是我应该如何在头文件中进行声明,以及 cpp 文件中的构造函数、析构函数才能工作?
通常,
如果要创建数组,最好使用适合该任务的容器:
-
std::vector
项的顺序容器。 -
std::deque
需要从任一端更新的项目的顺序容器。 -
std::list
将从序列中的任何点更新的顺序容器。
相关文章:
- 2D数组来自文本输入,中间有空格
- 如何使用用户输入在C++中正确填充2D数组
- 如何在C++中检查2D数组中负值的输入验证
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在C++函数中声明静态 2D 数组?
- 我已经阅读了很多关于 2d 数组的信息,但我在作业中使用它时遇到了麻烦
- 使用矢量将文本文件中的输入存储到 2D 数组中
- 获取 2D 数组 c++ 中的所有数字对
- 这是使用回溯的 nqueen 问题,但我使用了动态 2d 数组,我的程序编译良好,但不返回任何输出
- 如何在构造函数中使用初始值设定项设置具有相同值的 2d 数组?
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 如何创建一个所有行大小不同的 2D 数组,并且用户将指定每行将有多少个元素?
- 使用指针算法修改函数中的 2D 数组
- 在C++中初始化和打印 2D 数组
- 有没有办法使用输入的维度初始化 2d 数组中的所有项目而不循环C++?
- C++ 2D 数组写入多个位置
- 检测到堆损坏:在正常块 c++ 动态 2D 数组之后
- 如何从initializer_list初始化 2D 数组
- 交换函数不是在 C++ 中交换 2D 数组的元素