Stack e string*

di il
2 risposte

Stack e string*

Ciao a tutti, vi spiego subito il mio problema:
Un esercizio mi chiede di prendere in input delle stringhe e metterle in uno stack, successivamente stamparle nell'ordine nel quale sono state inserite.
Avevo pensato di creare un array dinamico string* str = new string[myStack.size], di copiare le varie stringhe e poi di stamparle in ordine inverso.

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int main()
{
	stack<string> myStack;
	
	//Prendo in input 10 stringhe
	for (int x = 0; x < 10; x++)
	{
		string str;
		cin >> str;
		myStack.push(str);
	}
	
	int size = myStack.size(); //Size di myStack
	string* str = new string[size]; //Array
	
	//Copio il contenuto dello stack nell'array, e vuoto lo stack progressivamente
	for (int x = 0; x < size; x++)
	{
		*(str + x) = myStack.top();
		myStack.pop();
	}
	
	//Stampo in ordine inverso l'array
	for (int x = size - 1; x >= 0; x--)
		cout << *(str + x) << " ";
}
Questi sono i miei errori:
1. *(str + x) = myStack.top();
Nessun operatore "+" corrispondente agli operandi.

2. *(str + x) = myStack.top();
"+": non valido per class.

3. string* str = new string[size];
'str': 'std::string *' differisce da 'std::string' nei livelli dei riferimenti indiretti.

Ho provato lo stesso identico codice su cpp.sh e funziona perfettamente come voglio, in Visual Studio non funge D:

2 Risposte

  • Re: Stack e string*

    Credo che lo scopo dell'esercizio sia svuotare e stampare lo stack tramite funzione ricorsiva. Se devi usare un array, tanto vale farlo dall'inizio...
  • Re: Stack e string*

    Giusto, tramite funzione ricorsiva.. Dovrei iniziare ad usarle un po'..
    Risolto!
Devi accedere o registrarti per scrivere nel forum
2 risposte