Programing/C- programing

C++ STL vector 프로그래밍

sosal 2012. 9. 12. 14:37
반응형

/*

 * http://sosal.tistory.com/

 * made by so_Sal

 */


벡터에서 지원하는 대표적인 함수들 정리해보려고 합니다.

1. push_back( 'data' ); //뒤에 데이터 삽입

   pop_back( 'data' );   //가장 뒤에 위치한 데이터 삭제


#include<iostream> // 입출력

#include<stdio.h>

#include<cmath>

#include<stdlib.h>

#include<cstring> //string 객체

#include<iomanip>

#include<vector> //vecter 객체


using namespace std;




int main(){

vector<int> v;

for(int i=0;i<6;i++){

v.push_back(i);

        }//0~5 삽입


for(int i=0;i<v.size();i++){

cout<<v[i];

}cout<<endl;

        //0~5 출력

for(int i=0;i<6;i++){

v.pop_back();

}//0~5 삭제


cout<<"vector size is : "<<v.size()<<endl;

}



2. insert 함수를 이용하여 중간에 삽입하는방법도 볼까요? 

99라는 숫자를 2번째 위치에 삽입해봅시다.


int main(){

vector<int> v;

        vector<int>::iterator it;; //iterator 생성


for(int i=0;i<6;i++){

v.push_back(i);

        }//0~5 삽입

        

        it = v.begin()+1; //v 시작위치를 it+1에 리턴

        it = v.insert(it,99); //시작위치에 99 삽입


      for(int i=0;i<v.size();i++){

                cout<<v[i]<<" "

;

}cout<<endl;

        //0~5 출력

for(int i=0;i<6;i++){

v.pop_back();

}//0~5 삭제


cout<<"vector size is : "<<v.size()<<endl;

}





3. find 함수와 erase 함수를 이용해서 원하는 숫자를 삭제해봅시다.



int main(){

vector<int> v;

vector<int>::iterator it;; //iterator 생성


for(int i=0;i<6;i++){

v.push_back(i);


}//0~5 삽입


it = v.begin()+1; //v 시작위치를 it+1에 리턴

it = v.insert(it,99); //시작위치에 99 삽입


v.erase( find(v.begin(),v.end(),4) ); // 4를 찾아 삭제


for(int i=0;i<v.size();i++){

cout<<v[i]<<" ";

}cout<<endl;

//0~5 출력


cout<<"vector size is : "<<v.size()<<endl;

}




그럼 이제 vector를 이용해서 문제를 풀어보세요 !!


제가 짠 소스는 아래 드래그하시면 나옵니다.

#include<iostream>
#include<stdio.h>
#include<cmath>
#include<stdlib.h>
#include<cstring>
#include<iomanip>
#include<vector>
#include<algorithm>
#include<iterator>

using namespace std;

int main(){
vector<int> v;
vector<int>::iterator it;
int n,input,pos;
cin>>n;                            //게임 횟수
for(int z=0;z<n;z++){
v.clear();                  //벡터 초기화
cin>>input;
for(int i=0;i<input;i++){
cin>>pos;          //학생의 위치
it = v.end()-pos; //위치를 iterator에 전
v.insert(it,i+1);    //벡터에 삽입

}
for(int i=0;i<v.size();i++){
cout<<v[i]<<" "; //출력
}cout<<endl;

}
}