Author

Topic: C++ затык с vector (Read 1757 times)

sr. member
Activity: 460
Merit: 250
October 20, 2014, 01:16:29 PM
#6
По-моему vector тут не подходит. То-ли map, то-ли set или что то в этом роде лучше наверное будет, если меня память не подводит.
Я пока что очень далёк от полного понимания всего что уже наворочено в с++, а от своего компа рабочего ещё дальше. Там как раз нечто подобное сейчас ковыряю...
map тормозной
тож думал об этом

в сущности мне нужно в цикле подцепить пару - хеш транзакции и блок в котором предполагается ее обрабатывать и потом с этой парой работать
legendary
Activity: 3570
Merit: 1100
October 20, 2014, 12:04:56 PM
#5
По-моему vector тут не подходит. То-ли map, то-ли set или что то в этом роде лучше наверное будет, если меня память не подводит.
Я пока что очень далёк от полного понимания всего что уже наворочено в с++, а от своего компа рабочего ещё дальше. Там как раз нечто подобное сейчас ковыряю...
sr. member
Activity: 460
Merit: 250
October 20, 2014, 11:46:40 AM
#4
...
v.push_back(make_pair(tx_id.c_str(), start));// запихиваем в вектор
...
v.push_back(make_pair(tx_id, start));
Я бы вот так в самом начале бы попробовал. А уже потом начал бы извращаться по всякому если бы чего-либо не заработало. Smiley

именно так я и поступал...
потом уже начал извраты добавлять...
к сожалению так тоже не работает
я проверял переменную tx_id там действительно хеш транзакции в string
и start это именно int номера блока....
сейчас добился появления номера в test но он совсем не номер  а какой то набор цифр откуда взявшихся не понятно...
legendary
Activity: 3570
Merit: 1100
October 20, 2014, 09:26:11 AM
#3
...
v.push_back(make_pair(tx_id.c_str(), start));// запихиваем в вектор
...
v.push_back(make_pair(tx_id, start));
Я бы вот так в самом начале бы попробовал. А уже потом начал бы извращаться по всякому если бы чего-либо не заработало. Smiley
sr. member
Activity: 460
Merit: 250
October 20, 2014, 05:47:59 AM
#2
самое интересное если добавляю
v.push_back(make_pair("test", 1));
и делаю поиск
vector::const_iterator it = find_if(v.begin(), v.end(), myfunctor("test"));

то все работает!!!!
вектор сразу становится непустым
и на выходе test = 1 в стринге!!

чего то напутал с типом данных походу....
вроде все правильно преобразовываю...
sr. member
Activity: 460
Merit: 250
October 20, 2014, 03:55:23 AM
#1
сишные гуру помогите Embarrassed
Code:
typedef pair T;
class myfunctor
{
public:
myfunctor(std::string keyval):m_key(keyval){}
bool operator() (const T& p)
{
return (p.first == m_key);
}
private:
string m_key;
};
int main()
{
std::string test;
std::string tx_id=tx.GetHash().ToString().c_str();///id транзакции в string
int start=nBestHeight;//номер блока в int
vector v;
v.clear();

v.push_back(make_pair(tx_id.c_str(), start));// запихиваем в вектор
vector::const_iterator it = find_if(v.begin(), v.end(), myfunctor(tx_id));//ищем по номеру транзакции
test +=boost::lexical_cast(it->second);//передаем в test номер блока
}
но блин вектор на поверку оказывается пустым
и соответственно переменная test на выходе = 0
а дожна быть в виде номера блока
Jump to: