프로그래밍 문법/c++

c++ 자료형

씩씩한 IT블로그 2020. 6. 21. 21:35
반응형

1. 큐

함수

기능

q.front()

가장 먼저 들어간 원소 리턴

q.back()

가장 마지막에 들어간 원소 리턴

q.push(value)

값을 추가

q.empty()

비어있으면 1

q.size()

내부 값의 개수 리턴

q.pop()

front값 삭제

 

2. 스택

#include <stack>

stack<int> mystack;
stack<vector<int>> mystack2; //스택안에 벡터

mystack.pop() // 스택의 끝 값 삭제
mystack.push(5) // 스택 삽입
a=mystack.top() // 스택의 끝 값 return

함수

기능

s.top()

가장 마지막에 들어간 원소 리턴

s.push(value)

값을 추가

s.empty()

비어있으면 1

s.size()

내부 값의 개수 리턴

s.pop()

top값 삭제

 

3. deque

#include <iostream>
#include <deque>
using namespace std;

int main(){
    deque<int> dq; // 덱 선언
    dq.push_back(10); //뒤에 넣기
    dq.push_front(200); //앞에넣기
    
    // 인자를 통한 덱확인
    for (deque<int>::size_type i = 0; i < dq.size(); ++i){
        cout << dq[i] << ' ';
    }

    // 반복자를 통한 덱확인
    deque<int>::iterator iter;
    for (iter = dq.begin(); iter != dq.end(); ++iter){
        cout << *iter << ' ';
    }

    // dfs돌릴때
    while(!stack.empty()) {
    }
}
//pop과 동시에 리턴되지 않으므로 아래와 같이 pop
a=dq.front();
dq.pop_front();

b=dq.back();
dq.pop_back();

함수

기능

dq.front()

가장 앞에 원소 리턴

dq.pop_front()

첫번째 원소 제거

dq.push_front()

가장 앞에 x 추가

dq.back()

가장 마지막 원소 리턴

dq.pop_back()

가장 마지막 원소 제거

dq.push_back()

가장 뒤에 x 추가

dq.size()

원소의 개수

 

4. priority queue (heap)

priority_queue<int,vector<int>,less<int>> pq
// 1. less<int> 대신 greater<int>를 쓰면 최소힙
// 2. priority_queue<int> pq 만 써도 됨.

함수

기능

pq.top()

가장큰 값 리턴

pq.push(value)

값추가

pq.empty()

비어있으면 1

pq.size()

개수 리턴

pq.pop()

top값 삭제

 

5. map(dictionary)

* key를 기준으로 자동 정렬

#include <map>

map<string, int> m;

함수

기능

m[key]=value

m.insert(make_pair("key",value))

입력

map<string, int>::iterator it

it->first

it->second

key

value 접근

m.erase("key")

제거

m.count("key")

개수반환 (있으면1 아니면0)

m.empty()

비어있으면 1 아니면 0

m.size()

총개수

 

6. SET

* 자동으로 오름차순 정렬

#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
using namespace std;

int main() {
	//선언
	set<int> s;

	//삽입
	s.insert(3);
	s.insert(4);
	s.insert(5);
	s.insert(5);

	//반복자를 통한 출력 ( s[i] 혹은 *(s.begin+i) 이런거 안된다!)
	set<int>::iterator it=s.begin();
	for (int i = 0; i < s.size(); i++) {
		cout<<*it<<",";
		it++;
	}
	cout << endl;

	//사이즈
	cout << s.size()<<endl;


	//비어있는지 확인
	cout << s.empty()<<endl;
	
	//값의 개수(set이기때문에 무조건 0아니면 1임)
	cout << s.count(4) << endl;

	//값을 모두 제거
	s.clear();

	return 0;
}

<output>

3,4,5,
3
0
1

함수

기능

s.insert(value)

입력

it++, it--,s.begin() 사용가능

s[i], s.begin()+i 불가

s.size()

총개수

s.empty()

비어있으면 1

s.count(value)

value개수 (있으면 항상1, 없으면 0)

s.clear()

값 모두 제거

 

7. pair

#include <utility>
pair<int,string> p;

함수

기능

p=make_pair(1,"name")

입력

p.first

p.second

첫번째원소

두번째원소

p1==p2

p1>p2

p1!=p2

p1>=p2

연산가능

sort

1. 첫번째 인자로 판단

2. 같을 시, 두번째 인자로 판단.

 

8. vector

#include <vector>

//1차원 벡터
vector<int> v; //빈 컨테이너
vector<int> v(n); // 0으로 초기화된 n개의 원소 갖음
vector<int> v(n,x); //x로 초기화된 n개의 원소 갖음
vector<int> v{1,2,3}; //벡터 v는 [1,2,3]
vector<int> v(v2); //v2를 v에 복사함
//2차원 벡터 (6*5 크기)
vector<vector<int>> arr(6, vector<int>(5, 0));

//벡터 추가
v.push_back(10);
//벡터 삭제, return값은 없고 끝값만 삭제함
v.pop_back();
//벡터 사이즈
v.size()
//끝값 삭제
v.poo_back()

 

반응형