Re: using STL Container across the Files
On Aug 8, 8:58 pm, Pallav singh <singh.pal...@gmail.com> wrote:
On Aug 7, 12:58 pm, James Kanze <james.ka...@gmail.com> wrote:
On Aug 6, 11:18 am, Pallav singh <singh.pal...@gmail.com> wrote:
How can we use STL Contianer Across the Files
example
file1.cc
map<int,int> xyz;
file2.cc
extern map<int,int> xyz;
It gives Error.
What error? With what compiler? With the compilers I use, I
have no problems with:
file1.cc:
#include <map>
std::map< int, int > xyz ;
file2.cc
#include <map>
extern std::map< int, int > xzy ;
A bit of precaution may be necessary because of order of
initialization issues, but otherwise, there's no problem.
map1.cc
#include <iostream>
#include <map>
#include <iterator>
using namespace std;
class A
{
public :
int x;
int y;
void display()const
{ cout<<" Value of x " << x << endl ;
cout<<" value of y " << y << endl ;}
};
struct compare
{
bool operator()(const A & s1, const A & s2) const
{ return ((s1.x== s2.x) && (s1.y == s2.y)); }
};
std::map<A,int,compare> object;
This is illegal. It's undefined behavior, so it may not give
you an error, but compare is not a valid. To be valid, the
comparison function must "induce a strict weak ordering on the
values". In particular, for a comparison function comp, if we
define a function equiv( a, b ) as being ! comp( a, b ) && !
comp( b, a ), then equiv must define an equivalence
relationship; for example, equiv( a, b ) && equiv( b, c ) implies
equiv( a, c ).
object.insert(pair<A,int>(A(1,2), 2));
object.insert(pair<A,int>(A(3,4), 2));
map2.cc
#include <iostream>
#include <map>
#include <iterator>
using namespace std;
extern map<A,int,compare> object;
What's A and compare, here? I don't see any definition of them.
map<A,int,compare>::iterator iter;
int main()
{
cout << "Map size: " << object.size() << endl;
for( iter = object.begin(); iter != object.end(); ++iter )
cout << (*iter).first << ": " << (*iter).second << endl;
return 0;
}
i am getting compilation error's
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34