Nano Hash - криптовалюты, майнинг, программирование

проверить последний элемент итератора

У меня есть цикл, как показано ниже:

for (multimap<string,string>::iterator it2 = ppp.first;it2 != ppp.second; ++it2)
   {
       if(it2==ppp.second -1)
       str=str+it2->second.substr(0,(it2->second).find('-'));
       else
       str=str+it2->second.substr(0,(it2->second).find('-'))+'&';
   }

Я использую условие, как показано ниже:

  if(it2==ppp.second -1)

для проверки последнего элемента и выполнения некоторых дополнительных функций, если я нашел последний элемент. Но приведенное выше условие не работает. это выдает мне ошибку:

"000001.cc", line 50: Error: The operation "__rwstd::__rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::basic_string<char, std::char_traits<char>, std::allocator<char>>>, __rwstd::__select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>::iterator - int" is illegal.
1 Error(s) detected.

Может ли кто-нибудь помочь.

21.12.2011

  • возможный дубликат: stackoverflow.com/questions/151046/ 21.12.2011
  • @dhruv Спасибо за ссылку. Это решило мою проблему. 21.12.2011

Ответы:


1

Вы не опубликовали весь фрагмент кода, поэтому я не уверен, что такое ppp, но я считаю, что это что-то вроде пары итераторов. Итератор для карты не определяет оператор-(int val), поэтому вы не можете его использовать. Однако вы можете исправить ошибку, выполнив что-то вроде этого:

multimap<string,string>::iterator end_val = ppp.second;
--end_val;
for (multimap<string,string>::iterator it2 = ppp.first;it2 != ppp.second; ++it2)
{
    if(it2==end_val)
    str=str+it2->second.substr(0,(it2->second).find('-'));
    else
    str=str+it2->second.substr(0,(it2->second).find('-'))+'&';
}

Надеюсь, это поможет.

21.12.2011

2

Пытаться

end = ppp.second;
std::advance (end, -1);
if (it2 == end) {}
21.12.2011

3

Предполагая, что ppp является мультикартой, вы должны получить итератор к первому элементу с помощью

ppp.begin() 

or

ppp.rbegin() // to get a reverse iterator

В вашем цикле:

multimap<string,string>::iterator it2 = ppp.first

pp.first не даст итератор, вместо этого он даст первый элемент pair вспомогательного класса pair<string, string>

21.12.2011
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..