0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 15
|
||||||
1 | ||||||
Конфликт итераторов06.10.2014, 23:19. Показов 994. Ответов 7
Метки нет (Все метки)
Доброго времени суток. Пишу Timsort с использованием шаблонов и итераторов. Написал класс CTimsort, в нем все необходимые методы и их реализацию. Приведу небольшой кусок кода:
no matching function for call to 'std::vector<CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::Run, std::allocator<CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::Run> >::at(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&)' В остальных местах кода, где используется std::vector<int>::at(), та же самая штуковина вылазит. Что я делаю не так?
0
|
06.10.2014, 23:19 | |
Ответы с готовыми решениями:
7
Итерации итераторов С++ Применение итераторов Использование итераторов Перегрузка итераторов |
18894 / 9851 / 2410
Регистрация: 30.01.2014
Сообщений: 17,295
|
|
06.10.2014, 23:21 | 2 |
0
|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 15
|
|||||||||||
06.10.2014, 23:28 [ТС] | 3 | ||||||||||
А такой код будет правильно работать? Ведь runPosition, на сколько я понимаю, не будет "принадлежать" этому контейнеру.
0
|
18894 / 9851 / 2410
Регистрация: 30.01.2014
Сообщений: 17,295
|
|
06.10.2014, 23:39 | 4 |
Нужно больше кода.
Если итератор получен у контейнера, он "принадлежит" ему так или иначе. Без контекста нельзя ни подтвердить ни опровергнуть это утверждение. Добавлено через 1 минуту PS. путаница с итераторами должна уйти, если начать воспринимать итератор как указатель на элемент.
0
|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 15
|
||||||
07.10.2014, 00:37 [ТС] | 5 | |||||
Вот весь "проблемный" код:
no matching function for call to 'CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::GetRun(__gnu_cxx::__normal_iterator<CTimsort<__gnu_cxx::__normal_iterator<int *, std::vector<int> >, std::less<int> >::Run*, std::vector<CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::Run, std::allocator<CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::Run> > >)' Возникает при каждом использовании GetRun(). Также, в 23 строке следующая ошибка: conversion from 'int' to non-scalar type 'CTimsort<__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::less<int> >::Run' requested.
0
|
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 15
|
||||||
07.10.2014, 13:11 [ТС] | 7 | |||||
Я считал, что такой вызов функции является основанием:
Не потеряется ли в таком случае смысл в использовании RandomAccessIterator? И возможно ли тогда будет приводить RandomAccessIterator к какому-то RunIterator и наоборот при необходимости?
0
|
07.10.2014, 13:15 | 8 |
maked0n, если итератор используется классом Rum то почему вы его не инкапсулируете в этот класс?
Итератор предоставляется классом с которым он работает. Посмотрите реализацию любого итератора в контейнерах stl.
0
|
07.10.2014, 13:15 | |
07.10.2014, 13:15 | |
Помогаю со студенческими работами здесь
8
Использование потоковых итераторов Не видит класс итераторов Потоки и запоминание итераторов Сравнение итераторов list Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |