2 / 2 / 4
Регистрация: 05.11.2016
Сообщений: 64
1

Std::list Получение доступа к произвольному элементу

23.09.2017, 07:34. Показов 5349. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне нужно посчитать абонентскую плату у списков,сделать объединение списков , а так же вывести фамилии абонентов живущих в одном районе.
C++
1
2
3
4
5
list <Abonent> l1,l2;
    Abonent obama213("Пупкин","Поток","Чудненко","330216","12345","12.12.2017","Оплачено",150,"11.11.2015");
    Abonent obama214("Васькин","Октябрьский","Чудненко","771144","54321","12.11.2015","Неоплачено",120,"10.10.2014");
    Abonent obama215("Боб","Поток","Малахова","290874","007","1.1.1998","Оплачено",12000,"15.15.1950");
    Abonent obama216("Барабака","Поток","Малахова","290874","007","1.1.1998","Оплачено",12000,"15.15.1950");
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Abonent
{
 
  public:
    string familia;
    string raion;
    string adres;
    string number_phone;
    string dogovor_numb;
    string data_dogovora;
    string oplata_ystanovki;
    int abonentskay_plata;
    string data_last_plateja;
 
    Abonent(): familia(""),raion(""),adres(""),number_phone(""),dogovor_numb(""),data_dogovora(""),oplata_ystanovki(""),abonentskay_plata(0),data_last_plateja("") {};
    Abonent(string _familia, string _raion,string _adres,string _number_phone,string _dogovor_numb,string _data_dogovora,string _oplata_ystanovki,int _abonentskay_plata,string _data_last_plateja):
         familia(_familia),raion(_raion),adres(_adres),number_phone(_number_phone),
         dogovor_numb(_dogovor_numb),data_dogovora(_data_dogovora),oplata_ystanovki(_oplata_ystanovki),abonentskay_plata(_abonentskay_plata),data_last_plateja(_data_last_plateja){};
 
    Abonent ( const  Abonent &e) :  familia(e.familia),raion(e.raion),adres(e.adres),number_phone(e.number_phone),dogovor_numb(e.dogovor_numb),
    data_dogovora(e.data_dogovora),oplata_ystanovki(e.oplata_ystanovki),abonentskay_plata(e.abonentskay_plata),data_last_plateja(e.data_last_plateja){};
     friend std::ostream& operator<<(std::ostream& out, const Abonent& e);
     friend std::istream& operator>>(std::istream& in, Abonent& e);
 
void show()
    {
        cout << "Фамилия - " << familia << endl << "Номер телефона -  " << number_phone << endl;
 
    }
      bool operator==(const Abonent&obj)
    {
        return obj.familia==this->familia;
    }
 
    string getName()const
    {
        return familia;
    }
        int getPlata()const
    {
        return abonentskay_plata;
    }
 
};
 
struct B : public binary_function< Abonent, string, bool > {
    bool operator () (const Abonent &obj, const string &familia) const {
        return obj.familia == familia;
    }
};
Такой вопрос как обратиться к полю abonentskay_plata и работать с ним, если доступ к элементу только front и back(1-ому и последнему) ?
C++
1
2
3
4
5
void GENERATION()
{
    std::list<Abonent>::iterator iter,it;
    cout<<l1.back().getPlata();
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2017, 07:34
Ответы с готовыми решениями:

Как обратиться к следующему элементу в std::list?
Добрый день. Пусть у меня есть список std::list&lt;int&gt; l; Есть итератор it, указывающий на элемент...

Получение предыдущего объекта из списка (std::list)
#include &lt;Iostream&gt; int main() { std::list&lt;COORD*&gt; coords; COORD* pCoord; for(uint16 i...

Получение доступа к элементу массива не по индексу
Доброго времени суток дамы и господа. Возникла сложность с получением доступа к элементу массива....

Получение доступа к родительскому элементу из вложенных друг в друга iframe
&lt;body&gt;&lt;iframe&gt; ... &lt;iframe&gt;&lt;/iframe&gt; ... &lt;/iframe&gt;&lt;/body&gt; Как из самого глубоко...

3
Модератор
Эксперт С++
13498 / 10752 / 6407
Регистрация: 18.12.2011
Сообщений: 28,692
23.09.2017, 07:44 2
У списков нет итераторов с произвольным доступов.
Поэтому
C++
1
2
3
4
5
for(std::list<Abonent>::iterator iter=l1.begin();iter!=l1.end();++l1)
{
    l1->show();
    int plata= l1->abonentskay_plata;
}
0
2 / 2 / 4
Регистрация: 05.11.2016
Сообщений: 64
23.09.2017, 10:35  [ТС] 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Abonent temp;
 for (std::list<Abonent>::iterator it = l1.begin(); it != l1.end(); it++){
 
      for (std::list<Abonent>::iterator iter = l2.begin(); iter != l2.end(); iter++){
                    temp=*iter;
                    cout<<temp.adres;
 
 
 
 
 
            }
 
    }
А вот так?)
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
23.09.2017, 11:16 4
http://www.cplusplus.com/refer... r/advance/
0
23.09.2017, 11:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2017, 11:16
Помогаю со студенческими работами здесь

Доступ к произвольному элементу последовательности по индексу
Реализуйте процедуру доступа к произвольному элементу последовательности (правильного списка,...

Обращение к произвольному элементу массива в Windows Form
В массиве типа std::string обртиться по индексу к любому элементу массива можно лeгко: ...

Реализация std::list, сложность list::size()
Часто приходилось пользоваться Listом, но сейчас столкнулся с небольшой неоднозначностью. ...

Синхронизация доступа к элементам List<List<SomeClass>>
Допустим, имеем класс class Row{ int Value {get; set;} int ID {get; set;} //.... }


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru