У меня такая ситуация:
У меня есть класс, который отслеживает массив указателей.Я построил пользовательский итератор, который проходит через этот массив.
Моя проблема заключается в том, как сделать его потокобезопасным, особенно при увеличении / уменьшении?
Вот набросок соответствующих частейhave:
typedef fruit * iterator;
class fruits
{
private:
fruit ** flist;
int n; //keeps track of position in flist
int count; //number of fruits
public:
iterator begin() {n=0; return fruit[n];}
iterator end() {n=count; return fruit[n];}
iterator operator++ ()
{
return fruit[++n];
}
}
Проблема, которую я вижу, состоит в том, что если две части программы создают итератор, то вещи не будут работать.Как C ++ STL справляется с этим?
ОБНОВЛЕНИЕ: Я обнаружил ошибку своих способов.Итератор должен отслеживать, где он находится сам по себе.Для этого я создал класс итератора, встроенный в мой основной класс.Жизнь теперь хороша.