mile04
23-02-2005, 10:59
hallo
mein Prog fügt eingie werte in meinem vector mit (vec.insert()).Das Einfügen funzt problemlos. aber bis es an einer bestimmten stelle dann bricht ab.
beim debuggen kommt die Fehlermeldung:
unbehandelte Ausnahme in myProg.exe: 0xC0000005:access violation
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int output();
vector<int> vec;
int input()
{
for( size_t row = 0; row < 12; ++row)
{
vec.resize(row+1);
vec[row]=row;
//std::cout << "\r\n";
}
output();
return 0;
}
int insert()
{
int position=0;
int y=0;
int x_mal=0;
int from =0;
int to =0;
position=10;
std::vector<int>::iterator Iter = vec.begin();
from = 11;
to = 22;
x_mal= 3;
for (int j=0;j<x_mal;++j)
{
vec.insert(Iter + position, from);
vec.insert(Iter + position+1, to);
}
output();
return 0;
}
int output()
{
cout<<"\n\nElemente des Vektors \n";
for( size_t row = 0; row < vec.size(); ++row)
{
cout <<std::setw(5)<<vec[row]<< ' ';
//std::cout << "\r\n";
}
cout << "\r\n";
return 0;
}
int main()
{
input();
insert();
return 0;
}
A propos wenn die for-variable row<11 funzt einwandfrei.
ich glaube hat es mit vec.capacity() zu tun, die am Anfang auf 16 eingestellt.
beim debuggen springt er in : :confused:
// TEMPLATE FUNCTION copy_backward
template<class _BI1, class _BI2> inline
_BI2 copy_backward(_BI1 _F, _BI1 _L, _BI2 _X)
{while (_F != _L)
*--_X = *--_L;
return (_X); }
Vielen Dank für eure Hilfe
mein Prog fügt eingie werte in meinem vector mit (vec.insert()).Das Einfügen funzt problemlos. aber bis es an einer bestimmten stelle dann bricht ab.
beim debuggen kommt die Fehlermeldung:
unbehandelte Ausnahme in myProg.exe: 0xC0000005:access violation
#include<iostream>
#include<vector>
#include<iomanip>
using namespace std;
int output();
vector<int> vec;
int input()
{
for( size_t row = 0; row < 12; ++row)
{
vec.resize(row+1);
vec[row]=row;
//std::cout << "\r\n";
}
output();
return 0;
}
int insert()
{
int position=0;
int y=0;
int x_mal=0;
int from =0;
int to =0;
position=10;
std::vector<int>::iterator Iter = vec.begin();
from = 11;
to = 22;
x_mal= 3;
for (int j=0;j<x_mal;++j)
{
vec.insert(Iter + position, from);
vec.insert(Iter + position+1, to);
}
output();
return 0;
}
int output()
{
cout<<"\n\nElemente des Vektors \n";
for( size_t row = 0; row < vec.size(); ++row)
{
cout <<std::setw(5)<<vec[row]<< ' ';
//std::cout << "\r\n";
}
cout << "\r\n";
return 0;
}
int main()
{
input();
insert();
return 0;
}
A propos wenn die for-variable row<11 funzt einwandfrei.
ich glaube hat es mit vec.capacity() zu tun, die am Anfang auf 16 eingestellt.
beim debuggen springt er in : :confused:
// TEMPLATE FUNCTION copy_backward
template<class _BI1, class _BI2> inline
_BI2 copy_backward(_BI1 _F, _BI1 _L, _BI2 _X)
{while (_F != _L)
*--_X = *--_L;
return (_X); }
Vielen Dank für eure Hilfe