Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97

Как отправить копию Stack-а в функцию?

01.11.2012, 16:35. Показов 2173. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно как отправить именно копию стэка в функцию.
Есть функция которая проходится по элементам стэка и делает проверку их
C++
1
2
3
4
5
if ( *pr>=*prior)
                    {
                        flag1 = true;
                        stek->Pop();
                    }
пока не дойдет до конца стека. Естественно при возврате в основную функцию - все элементы в моем стеке удалены. как быть?
Использую класс Stack
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2012, 16:35
Ответы с готовыми решениями:

Как передать копию массива в функцию?
Как реализовать функцию, чтобы массив, передаваемый в качестве аргумента, невозможно было изменить из данной функции?

Как передать в функцию копию массива?
Доброго времени суток. Облазила кучу тем, но так и не поняла, как передать в функцию копию массива. Есть программа, в которой выполняются...

Блокирует vk.com просит отправить на почту копию паспорта или смс
слышал, что вирус может "мутировать" vk.exe vkontakte.exe на компьютере не обнаружены так что их не удалить по рекомендации...

6
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.11.2012, 17:30
Цитата Сообщение от sanchoflat Посмотреть сообщение
именно копию стэка
По идее ... передать по значению а не по ссылке

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
51
52
53
54
#include <iostream>
#include <stack>
 
using namespace std;
 
 
void valFunction(  stack<int> mystack )
{
      while (!mystack.empty())
  {
     cout << " " << mystack.top();
     mystack.pop();
  }
}
 
void refFunction(  stack<int> &mystack )
{
      while (!mystack.empty())
  {
     cout << " " << mystack.top();
     mystack.pop();
  }
}
 
int main ()
{
  stack<int> mystack;
 
  for (int i = 0; i < 10; ++i) 
 
      mystack.push(i);
 
  cout << "ValFunction working :\n";
    valFunction(mystack);
 
  
      if (mystack.empty())
         cout << "\nStack is empty !!!\n";   
      else 
         cout << "\nStack is not empty !!!\n";
 
      cout << "\nRefFunction working :\n";
  refFunction(mystack);
 
  
      if (mystack.empty())
         cout << "\nStack is empty !!!\n";  
      else 
         cout << "\nStack is not empty !!!\n";
 
  cout << endl;
 
  return 0;
}
1
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
01.11.2012, 17:34  [ТС]
а вот как быть в таком случае?
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
{
Stack^ stek = gcnew Stack;
...
verxnielem (&prioritet,stek,&pr,out);
 
 
}
 
void verxnielem (int *prior,Stack^ stek,int *pr,Stack^ out )
        {
            *pr=0;
            bool flag1 = false;
            
            while ( stek->Count != 0)
            {
                    flag1 = false;
                    if (Convert::ToChar(stek->Peek()) == Convert::ToChar('-') || Convert::ToChar(stek->Peek()) == '+' )*pr = 1;
                    if (Convert::ToChar(stek->Peek()) == Convert::ToChar('*') || Convert::ToChar(stek->Peek()) == Convert::ToChar('/')) *pr = 2;
                    if (Convert::ToChar(stek->Peek()) == '^' ) *pr = 3;
                    
                    if ( *pr>=*prior)
                    {
                        flag1 = true;
                        stek->Pop();
                    }
                }
        }
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.11.2012, 18:03
sanchoflat, раз у вас Stack ссылочный тип , значит
придется делать копию
:
C++
1
2
3
4
5
    Stack^ stek = gcnew Stack;
 
            Stack^ Copystack = gcnew Stack(stek);
 
verxnielem (&prioritet, Copystek ,&pr,out);
( по моему скромному опыту в C# - именно так приходилось делать )
Даже, все же надеюсь что ошибаюсь .
1
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
01.11.2012, 18:27  [ТС]
Так я тоже думал делать, надеялся что есть более простой вариант.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
01.11.2012, 18:35
Вот даже красивее будет .Незачем лишние объекты плодить
C++
1
2
Stack^ stek = gcnew Stack;
verxnielem (&prioritet,    gcnew Stack(stek)   ,&pr,out );
1
5 / 7 / 3
Регистрация: 05.11.2011
Сообщений: 97
01.11.2012, 19:51  [ТС]
во, спасибо, то что нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2012, 19:51
Помогаю со студенческими работами здесь

Как залить бутлоадер в китайскую копию arduino nano v3.0(CH340) через копию UNO
Пришли 2 контроллера, китацские копии arduino nano 3 и UNO. Обе на CH340. Драйвера встали отлично, UNO работает без проблем, а в NANO...

[bcc32 Error] File1.cpp(19): E2316 'Stack<T>::Stack()' is not a member of 'Stack<T>'
Возникает ошибка File1.cpp(19): E2316 'Stack&lt;T&gt;::Stack()' is not a member of 'Stack&lt;T&gt;' #pragma hdrstop #pragma argsused ...

Как отправить event в функцию?
Есть код js easypay.core.create(event, success, error) на странице html есть форма и ее изменять нельзя, из этой формы я достаю...

Как отправить структуру в функцию?
Как отправить массив структур в функцию при использовании typedef? Вот на таком примере: #include &lt;stdio.h&gt; #include...

Как отправить POST-запрос через функцию?
Здравствуйте,подскажите как можно отправить POST запрос через функцию. Пробовал так,но не получается, все переменные объявлены ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru