MyStruct
{CString word,
int spam,
int ham}
Как организовать STL set<MyStruct> , где MyStruct{CString, int, int}
Код:
как организовать индексацию, чтобы сортировать по word? не могу разобраться с парами...
нужен динамический контейнер для отдельных слов с весом спамности.
с возможностью быстрого поиска и сортировки.
может быть предложите альтернативу т.к. на данный момент пытаюсь организовать все в list<>
Цитата:
PS практического опыта в программировании очень мало.
действие разворачивается в visual c++2010 или 6
действие разворачивается в visual c++2010 или 6
Если я Вас правильно понял, то могу предложить использовать map<string, MyStruct>, при этом в качестве строки, являющейся ключом, можете использовать word, а ваша структура будет к нему в довесок. Минусом решения является дублирование данных, будет хранится копия строки в качестве ключа контейнера.
Код:
MyStruct::operator <(const & MyStruct)
Цитата:
могу предложить использовать map<string, MyStruct>
Пошел по пути наименьшего сопротивления. С имеющимся багажом знаний пришел к такому...
Код:
typedef map<string, pair<int,int>>> CMyMap;
CMyMap m_conteiner;
CMyMap m_conteiner;
сейчас буду пробовать реализовать.
перегрузка тоже хорошо, но нет времени вспоминать что и как
так работает
Код:
typedef map<string, pair<int,int>>> MyMap; // знак > лишний
а так не работает - выдает ошибку (не обнаружен знак ","перед ...)
Код:
typedef map<string, pair<int,int>> CMyMap;
это глюк компилятора или я что-то не знаю?
и еще не нашел. как работать с такой парой в паре?
как к ней обращаться и читать-записывать данные?
пробел между >> поставь, должно нормально работать.
Цитата: arrjj
пробел между >> поставь, должно нормально работать.
Спасибо, помогло
Код:
typedef map < string, pair<int,int> > CMyMap;
CMyMap m_conteiner;
CMyMap::iterator p_pos;
CMyMap m_conteiner;
CMyMap::iterator p_pos;
подскажите как использовать в таком случае (инициализировать и обратиться)
Код:
m_conteiner.insert( //что дальше? как обратиться к паре? чтоб записать или считать
//что-то вроде этого ....
m_conteiner.insert(pair<string, pair<int,int> > ("qqqq",(12,23)));
//что-то вроде этого ....
m_conteiner.insert(pair<string, pair<int,int> > ("qqqq",(12,23)));
или
Код:
m_conteiner["qqqq"] = ....(
Код:
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>
#include <map>
#include <utility>
using namespace std;
typedef pair <int,int> mypair;
typedef pair < string, mypair > megapair;
typedef map < string ,mypair > mymap;
#define focus(a,b,c) megapair(a,mypair(b,c))
int main(){
mymap a;
a.insert(focus("hello",1,2));
a.insert(focus("bye",3,4));
cout<<a.find("hello")->second.second<<endl;
cout<<a.find("bye")->second.first<<endl;
return 0;
}
#include <iostream>
#include <stdlib.h>
#include <string>
#include <map>
#include <utility>
using namespace std;
typedef pair <int,int> mypair;
typedef pair < string, mypair > megapair;
typedef map < string ,mypair > mymap;
#define focus(a,b,c) megapair(a,mypair(b,c))
int main(){
mymap a;
a.insert(focus("hello",1,2));
a.insert(focus("bye",3,4));
cout<<a.find("hello")->second.second<<endl;
cout<<a.find("bye")->second.first<<endl;
return 0;
}
А вот пара сцылок: тыц тыц
почти к этому пришел, только макроопределения для меня в новинку, буду читать...
Цитата: maximsoft
Код:
typedef map < string, pair<int,int> > CMyMap;
CMyMap m_conteiner;
CMyMap::iterator p_pos;
CMyMap m_conteiner;
CMyMap::iterator p_pos;
подскажите как использовать в таком случае (инициализировать и обратиться)
m_container.insert(CMyMap::value_type("zzz", std::make_pair(10, 20)));