64,648
社区成员
发帖
与我相关
我的任务
分享
int main()
{
list<A> alist;
A a(3);
A b(4);
alist.push_back(a);
alist.push_back(b);
list<A> blist(alist);
// list<A> blist = alist;
// blist.push_back(a);
// blist.push_back(b);
// copy(alist.begin(), alist.end(), back_inserter(blist));
cout << endl << &*(alist.begin()) << " " << &*(++alist.begin()) << endl; //print a elem address
cout << endl << &*(blist.begin()) << " " << &*(++blist.begin()) << endl; //print b elem address, should be different from a's.
return 0;
}
是这种情况吗??
#include<list>
#include<iostream>
using std::cin;
using std::cout;
using std::endl;
using std::list;
class CADCAccrMlcLeaf
{
int m_i;
public:
explicit CADCAccrMlcLeaf(int i):m_i(i){}
friend std::ostream& operator<<(std::ostream& os,const CADCAccrMlcLeaf& a){return os<<a.m_i;}
};
class A
{
list<CADCAccrMlcLeaf> m_pLeaves;
public:
A(){}
void Init(const list<int>& lst)
{
list<int>::const_iterator it1(lst.begin()),it2(lst.end());
for(;it1!=it2;++it1)
m_pLeaves.push_back(CADCAccrMlcLeaf(*it1));
}
friend std::ostream& operator<<(std::ostream& os,const A& a)
{
list<CADCAccrMlcLeaf>::const_iterator it1(a.m_pLeaves.begin()),it2(a.m_pLeaves.end());
for(;it1!=it2;++it1)
os<<*it1<<' ';
return os<<"\n";
}
// A(const A& a):m_pLeaves(a.m_pLeaves){}//不需要也能正常工作
// A& operator=(const A& a){if(this!=&a)m_pLeaves=a.m_pLeaves;return *this;}//不需要也能正常工作
};
int main()
{
srand((unsigned int)time(0));
list<int> lst;
for(int i(0);i<10;++i)
lst.push_back(rand()%32);
A a;
a.Init(lst);
A b(a),c;//拷贝复制
c=b;//赋值
cout<<"a= "<<a;
cout<<"b= "<<b;
cout<<"c= "<<c;
////////////////////////////////////////////////////////
system("PAUSE");
return 0;
}
class A{
public:
A(int a=0):__a(a){};
int GetValue(){return __a;};
private:
int __a;
friend ostream& operator << (ostream& c, const A& a){
cout << a.__a;
return c;
};
};
int main()
{
list<A*> alist;
A *a = new A(3);
A *b = new A(4);
alist.push_back(a);
alist.push_back(b);
list<A*> blist(alist);
// list<A*> blist = alist;
// blist.push_back(a);
// blist.push_back(b);
// copy(alist.begin(), alist.end(), back_inserter(blist));
cout << endl << &*(alist.begin()) << " " << &*(++alist.begin()) << endl; //print elem address
cout << endl << &*(blist.begin()) << " " << &*(++blist.begin()) << endl;
return 0;
}