Re: stack overflow error when using vector stl
I modified your code to get it to compile and it ran fine.
The one flaw I noticed was that you are initializing your vectors with:
vector< vector <Tissue*> > tissueArray(cRows);
and later,
vector<Tissue*> tRow(cCols);
I don't think you want to do that, since you're using push_back().
Below, I leave off the ctor argument, and use vector::reserve() to set the
initial capacity.
#include <iostream>
#include <vector>
using namespace std;
enum TissueType { Fibre, Vessel };
enum TissueStimulus { Absent, Present };
enum TissueState { Inactive, Active };
const double Fpo2 = 0.0;
struct Tissue {
TissueType type; // Fibre or Vessel
TissueStimulus stimulus;
TissueState state;
double tpo2;
double po2;
double deficit;
double demand;
double x;
double y;
double v;
double u;
double Iext;
}; // Tissue
Tissue* createFibre() {
Tissue* tissue;
tissue = new (Tissue);
tissue->type = Fibre;
tissue->po2 = Fpo2;
tissue->state = Inactive;
tissue->stimulus = Absent;
tissue->deficit = tissue->demand = 0.0;
tissue->x = tissue->y = tissue->Iext = tissue->v = tissue->u
= tissue->tpo2= 0.0;
return (tissue);
} // createFibre
Tissue* createVessel() {
Tissue* tissue;
tissue = new (Tissue);
tissue->type = Vessel;
tissue->po2 = Fpo2;
tissue->state = Inactive;
tissue->stimulus = Absent;
tissue->deficit = tissue->demand = 0.0;
tissue->x = tissue->y = tissue->Iext = tissue->v = tissue->u
= tissue->tpo2= 0.0;
return (tissue);
} // createVessel
int main() {
const int cRows = 300;
const int cCols = 300;
TissueType type = Vessel;
vector < vector < Tissue* > > tissueArray;
tissueArray.reserve(cRows);
for (int i = 0; i < cRows; i++) {
//creating a row of tissue cells
vector <Tissue*> trow;
trow.reserve(cCols);
for (int j=0; j<cCols; j++) {
if (type == Fibre) {
trow.push_back(createFibre());
type = Vessel;
}
else {
trow.push_back(createVessel());
type = Fibre;
}
}
tissueArray.push_back(trow);
}
cout << "Everything is fine here." << endl;
return 0;
} // main
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]