Форум программистов, компьютерный форум CyberForum.ru

Передача списка в функцию - C++

Восстановить пароль Регистрация
 
romka_f
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 15
14.04.2013, 17:31     Передача списка в функцию #1
Нужно написать функцию, которая работает одновременно с двумя списками. Как это правильно сделать? Список реализован как класс. Желательно коротенький примерчик, прототип подобной функции. Спасибо!

Добавлено через 19 минут
Ребята, мне просто в двух словах, как передать функции 2 списка, что бы можно было с ними нормально работать. Очень надеюсь на ответ
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igormalanyk
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 33
14.04.2013, 17:42     Передача списка в функцию #2
Передать указатели на начало списка, и потом с ним работать.
romka_f
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 15
14.04.2013, 17:48  [ТС]     Передача списка в функцию #3
Цитата Сообщение от igormalanyk Посмотреть сообщение
Передать указатели на начало списка, и потом с ним работать.
Дело в том, что если передавать указатели на начало обоих списков, то как потом работать одновременно с двумя списками? Скажем, я передаю два указателя l1 и l2. Как тогда мне работать с такими указателями, как, например, current или next? Мне нужен список как таковой, а не начальный элемент
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
14.04.2013, 17:58     Передача списка в функцию #4
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
#include <iostream>
#include <list>
 
class Foo
{
public:
    std::list<int> int_list;
    std::list<char> char_list;
 
};
 
void Func_add(std::list<int>& il, std::list<char>& cl)
{
    il.insert(il.begin(), 10);
    cl.insert(cl.begin(), 'c');
}
 
void Func_show(std::list<int>::const_iterator ii, std::list<char>::const_iterator ci)
{
    std::cout << *ii << ' ' << *ci  << '\n';
}
 
int main()
{
    Foo obj;
 
    Func_add(obj.int_list, obj.char_list);
 
    std::list<int>::const_iterator int_iter= obj.int_list.begin();
    std::list<char>::const_iterator char_iter = obj.char_list.begin();
    Func_show(int_iter, char_iter);
}
Добавлено через 2 минуты
Можно передать как итераторы так и ссылку на список.
romka_f
0 / 0 / 0
Регистрация: 08.04.2013
Сообщений: 15
14.04.2013, 19:17  [ТС]     Передача списка в функцию #5
Всё равно, не получается, объясню на своём примере.
У меня есть список в виде класса List.
Мне нужно передать в функцию два списка и в функции их объединить в один.
Вот кусок кода:

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
class Elem
{
public:
    int num;
    Elem *next;
    Elem(int n) { num = n; next = NULL; };
};
// Klase List - saistГ®ts vienvirziena saraksts
class List
{
protected:
    Elem *first, *last;
public:
    Elem *current;
public:
    List () { first = last = current = NULL; };
    //void add_element (int n); // pievieno beigГўs
    void addToBack(const int value);
    void delete_element (); // izmet no sГўkuma
    int is_empty () { return (first == NULL); };
    void start () { current = first; };
    int end () { return (current == NULL); };
    void next(){if (!end())current = current -> next;};
    void print();
    Elem* merge_lists(/*КАК ПЕРЕДАТЬ ДВА СПИСКА СЮДА??*/);
 
    //..........................
 
   int main()
   {
    //................
   }
 
   Elem* List::merge_lists(/*КАК ПЕРЕДАТЬ ДВА СПИСКА СЮДА??*/)
{
    List l3;
    l3.current=l3.first;
    for(l.start(); l.!end(); l.next())
    {
        Elem *p = new Elem (l.current->num);
        if (l3.first == NULL) l3.first = l3.last = p;
        else l3.last = l3.last -> l3.next = p;
        l3.current =p;
 
        //............
    }
}
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
14.04.2013, 19:59     Передача списка в функцию #6
Один список передаётся через указатель this (неявно), а второй как аргумент функции (в виде объекта класса). Т.е. фактически, нужно передать только ссылку или указатель на объект второго списка и добавить к первому второй в самой функции. Почитайте больше классах.
Yandex
Объявления
14.04.2013, 19:59     Передача списка в функцию
Ответ Создать тему
Опции темы

Текущее время: 16:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru