Как связать boost::iterator_range класса Iterator с помощью Boost PythonC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как связать boost::iterator_range класса Iterator с помощью Boost Python

Сообщение Anonymous »

Я новичок в boost::python, поэтому, пожалуйста, простите меня, если задаю глупый вопрос. Я пытаюсь привязать классы Container и Iterator к Python. Мой контейнер похож на матрицу элементов, где к каждой строке можно получить доступ через метод Iterate(), который возвращает boost::iterator_range моего Iterator. В Iterator реализованы различные операторы: ++, !=, == и * для получения экземпляра Accessor, который может получить доступ к данным элемента. Код выглядит следующим образом:

Код: Выделить всё

class Accessor {
ItemValue get_value_item() {...}
};

class Iterator {
public:
Iterator &operator++();
Iterator &operator++(int);
bool operator==(...);
bool operator!=(...);
Accessor operator*() const {
return Accessor(idx_);
}
private:
int idx_;
};

class Container {
public:
boost::iterator_range Iterate(int id) {
return boost::iterator_range(Iterator(...), Iterator(...));
}
};

Я ожидаю, что код Python будет выглядеть так:

Код: Выделить всё

container = Container()
def func(id):
for record in container.Iterate(id):
print(record.get_accessor.get_value_item())
Я могу привязать только класс Container и застрял при привязке класса Iterator, потому что понятия не имею, как привязать этот оператор к Python. Я не знаком с Python, поэтому не совсем понимаю, как работает итерация в Python.
Как мне предоставить Iterator и boost::iterator_range на Python?

Подробнее здесь: https://stackoverflow.com/questions/781 ... ost-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Диапазон на основе пары
    Anonymous » » в форуме C++
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как можно привести Iterator к Iterator?
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как можно привести Iterator к Iterator?
    Anonymous » » в форуме JAVA
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • GCC 11.1 отвергает концепцию range-v3 C++20, примененную к ref_view boost::iterator_range (которая принята более ранней
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • GCC 11.1 отвергает концепцию range-v3 C++20, примененную к ref_view boost::iterator_range (которая принята более ранней
    Anonymous » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»