mercredi 25 mars 2015

How to add the ordered unique index specifies in multi_index_container

I'm using boost:multi_index_container. following is the code



#include <string>
#include <boost/multi_index_container.hpp>
#include "boost/multi_index/global_fun.hpp"
#include "boost/multi_index/hashed_index.hpp"
#include <boost/multi_index/sequenced_index.hpp>
#include "boost/multi_index/mem_fun.hpp"
#include "boost/multi_index/member.hpp"
#include "boost/multi_index/ordered_index.hpp"
#include "boost/multi_index/indexed_by.hpp"

using namespace std;

class uri
{
public:
string str;
uri(string s) :str(s)
{
}
string getUri(){ return str; }

};


struct UriWithBase
{
UriWithBase(uri u1, uri u2) :link(u1), baseLink(u2){}
uri link;
uri baseLink;
};



int main()
{
typedef boost::multi_index::multi_index_container <
UriWithBase*,
boost::multi_index::indexed_by <
boost::multi_index::sequenced < >
>
> UriMultiIndex;

UriMultiIndex m_uris;

uri urib1("www.google.com");
uri uri1("www.news.google.com");

UriWithBase *ubptr = new UriWithBase(uri1, urib1);

m_uris.push_back(ubptr);
return 0;
}


Now I want to add a ordered unique index specifies in multi_index_container. This index is for unique order of elements in the container depends upon the first element of "UriWithBase" class i.e. uri link. I tried following but not worked. boost::multi_index::ordered_unique<



boost::multi_index::tag<uris_by_uri>,
BOOST_MULTI_INDEX_CONST_MEM_FUN(UriWithBasePtr, const uri&, (*(UriWithBasePtr)).link)>

Aucun commentaire:

Enregistrer un commentaire