2015-01-27 2 views
0

Im to new to C++. 배열로 스택을 만들고 싶습니다. STL을 사용하고 있습니다. 내가 배열에 두 개의 값을 저장하고 밀어 필요/i를 간단하게 할 것입니다 파이썬에서 를 스택 팝업 :배열 요소가있는 STL 스택

s = Stack() 
s.push((1,"item")) 
s.push((3,"item")) 

그래서 스택에서 두 개의 튜플이있을 것 (1, "항목"), (3, "항목)

전 C의 ++에서이 같은 시도,하지만 잘못된 :

stack<string, list<string> > exampleStack; 
string test[2] = {"wtf","lol"}; 
exampleStack.push(dd); 
+0

항상 2 개의 항목 또는 n 개의 항목 인 스택에 요소를 밀어 넣어야합니까? – PDizzle745

답변

1

서로 다른 데이터 유형의 이 개 값을 저장하려면, 당신은 U 수 se std::pair.

  1. stack<pair<int,string> >을 만듭니다.
  2. pair<int,string>을 스택에 넣으려면 push() 함수와 make_pair 함수를 사용하여 push() 함수의 쌍을 만듭니다.

코드 :

stack<pair<int,string> > s; 
s.push(make_pair(1,string("item"))); 
s.push(make_pair(3,string("item"))); 

편집 : 당신이 g++이 들린다 -std=c++11 플래그를 사용하는 경우 (감사 @imlyc하는)

, 당신은

s.push(make_pair(1,string("item"))); 

을 대체 할 수

s.push({1,"item"}); 
+1

또는 단지's.push ({1, "abc"});' – imlyc

0
stack<list<string> > exampleStack; 

list<string> l1 = list<string>; 
l1.push_back("aaa"); 
l1.push_back("bbb"); 
exampleStack.push(l1); 

list<string> l2 = list<string>; 
l2.push_back("ddddd"); 
l2.push_back("eeeee"); 
exampleStack.push(l2);