A mam taką małą dygresję. Niestety ciągle nie mogę puść do przodu w programowaniu, bo podstawy mnie zaskakują.
1) szukałem rozwiązania jak w cout<<____1____;
2) a rozczarowało mnie cout<<____2____;
Tzn wiem jak to obejść, mniej więcej wiem dlaczego. Fakt wszędzie piszą żeby stosować iteratory. Ale zastanawiam się ile jeszcze takich niespodzianek ma c++.
Taki mały kodzik wczytanie danych do vectora przez konstruktor
#include <iostream>
#include <vector>
class cinsomething
{
int x;
int count;
public:
cinsomething ()
{
std::cin>>x;
count=startcount++;
std::cout<<"construstorNb = "<<construstorNb++<<"___________\n";
}
cinsomething(const int resetcount)
{
startcount=resetcount;
}
~cinsomething ()
{
std::cout<<"construstorNb = "<<deconstrustorNb++<<"___________\n";
}
static int construstorNb;
static int deconstrustorNb;
static int startcount;
friend std::ostream & operator << (std::ostream &, const cinsomething &);
};
std::ostream & operator << (std::ostream &os, const cinsomething & cin)
{
return os<<"x="<<cin.x<<"\tcount="<<cin.count<<std::endl;
}
int cinsomething::construstorNb;
int cinsomething::deconstrustorNb;
int cinsomething::startcount;
using namespace std;
int main()
{
{
vector<cinsomething> vec(3);
cout<<"_______1__________\n";
for(auto &x:vec); //
for(const auto &x:vec)
cout<<x;
cout<<"_______2__________\n";
cinsomething(0);
vec.resize(5);
for(auto &x:vec)
x=cinsomething();
for(const auto &x:vec)
cout<<x;
}
cout<<"\n"<<cinsomething::construstorNb-cinsomething::deconstrustorNb;
cout<<"\n"<<cinsomething::construstorNb;
cout<<"\n"<<cinsomething::deconstrustorNb;
return 0;
}
wyjście
11 12 13
construstorNb = 0___________
construstorNb = 1___________
construstorNb = 2___________
_______1__________
x=11 count=0
x=12 count=1
x=13 count=2
_______2__________
construstorNb = 0___________
21 22 23 24 25
construstorNb = 3___________
construstorNb = 4___________
construstorNb = 1___________
construstorNb = 2___________
construstorNb = 3___________
construstorNb = 5___________
construstorNb = 4___________
construstorNb = 6___________
construstorNb = 5___________
construstorNb = 7___________
construstorNb = 6___________
26 27
construstorNb = 8___________
construstorNb = 7___________
construstorNb = 9___________
construstorNb = 8___________
x=23 count=2
x=24 count=3
x=25 count=4
x=26 count=5
x=27 count=6
construstorNb = 9___________
construstorNb = 10___________
construstorNb = 11___________
construstorNb = 12___________
construstorNb = 13___________
-4
10
14
edit:: taka mała korekta po co mi drugi konstruktor.