본문 바로가기
Programming/C, C++

C++ 자주 사용되는 문법

by Dev_카페인 2023. 9. 15.
반응형

[C++] 자주 사용되는 문법

 

반복문

 

For

for(초기식;조건식;증감식)
{
	// 구현내용
}

초기식, 조건식, 증감식은 생략 가능

생략 시 구현과정에서 빠져나올 수 있도록 해야한다.

 

while

while(조건식)
{
	// 구현 내용
}

조건식이 참일 경우 실행한다.

 

do ~ while

do
{
	// 구현 내용
} while (조건식)

조건식과 관계없이 최소 한 번은 실행 후 반복 조건을 검사한다.

 

 

선택

switch

switch ( 기준값 )
{
 case 선택값:
    // 이 값일 때 구현 내용
    break;
 case 선택값:
    // 이 값일 때 구현 내용
    break;
 default:
    // 그 외 나머지
}

선택값을 차례대로 보면서 기준값에 해당하는 구현내용을 실행한다.

break; 명령이 없을 경우 다음 case의 구현내용도 실행하므로 주의가 필요하다.

기준값에 해당하는 비교값들이 없을 경우 default 안에있는 구현 내용을 실행한다.

 

 

문자열

#include<cstring>

> strcmp(a, b) 문자열 비교

> strlen(str) 문자열 길이

> strcpy() 문자열 복사

#include<cstring>

char str[10];
char str2[10];

cin >> str;		// 한 단어 읽기
cin.getline(str, 10);	// 한 줄 읽기 (띄어쓰기 무시)
cin.get(str, 10);	// 공백 취급
cin.getline(str2, 100, '\n'); // 공백포함입력
// cin.getline(char buf[], int size, char delimitChar);
if(strcmp(str, str2) == 0)	// 문자열 비교

 

#include<string>

#include<string>

string str;
string str2;

cin >> str;			// 문자열 입력
getline(cin, str) 	// 문자열 입력
getline(str, ','); 	// char가 있는 곳 까지 읽고 char은 포함하지 않음

str.size();
str.length();

int index = str.find("aa");	// aa가 있는 인덱스를 리턴, 없으면 npos(-1)리턴

if(str1 < str2) 아스키 코드 값 기준

str.clear()

to_string(int)	// 문자열로 변경

string to int, double, float, long	// 문자열을 숫자로
stoi, stod, stof, stol

// 문자열 슬라이싱
str.substr(n) // n번 인덱스 부터 끝까지 string으로 변환
str.substr(n, m) // n번 인덱스 부터 m번 인덱스까지 string으로 변환

// 문자열 추가
str += "aaa";
str.append("abc");

// 문자열 복사
size_type copy(charT* s, size_type len, size_type pos = 0) const;
str.copy(str2, 3, 1)	// str2의 1번 부터 3개 복사
// 문자열 바꾸기
str.swap(str2);

 

배열

array

int* arr = new int[10]; // 동적 메모리 할당

delete[] arr; // C에서의 free와 동일

 

리스트

list

#include<list>

list<int> datas;

datas.push_back(5);
datas.pop_back();
datas.push_front(5);
datas.pop_front();

datas.size();
datas.empty();
datas.front();
datas.back();
datas.insert(iterator, 1);
datas.erase(iterator);

 

STL

 pair, vector, queue, stack, set, map, priority queue 

 

pair

//  vector나 algorithm 헤더 파일에 포함

#include <vector>

pair<int, char> p;
p.first = 1;
p.second = 'a';

 

vector

front() : 첫 번째 원소
back() : 마지막 원소
begin() : 첫번째 위치
end() : 마지막의 다음 위치
push_back() : 마지막에 데이터 추가
pop_back() : 마지막에서 데이터 뽑기
size() : 원소의 개수
clear() : 비우기

erase() : erase(v.begin()) ⇒ 첫 번째 원소 제거

reverse() : reverse(v.begin(), v.end()) ⇒ string도 reverse가 됨

#include <vector>

vector<int> v1 = {1, 2, 3};
vector<vector<int>> v;	// 2차원 배열처럼
v1.push_back(5);

for (int i=0; i < v1.size(); i++) {
        cout << v1[i];
}

 

 

Queue

  • push() : 데이터 추가
  • pop() : 처음의 데이터 뽑기
  • front() : 첫 번째 원소
  • back() : 마지막 원소
  • size() : 큐의 크기
  • empty() : 큐가 비었는지 확인
#inlcude <queue>

queue<int> q1;
queue<pair<int,char>> q2;
q1.push(4);
q1.pop();
q2.push(make_pair(1,'a'))

 

 

Stack

  • push() : top에 데이터 추가
  • pop() : top의 데이터 뽑기
  • top() : top의 원소
  • size() : 스택의 크기
  • empty() : 스택이 비었는지 확인
#inlcude <stack>

int main(int argec, char *argv[]) {
	stack<int> s1;
	stack<pair<int,char>> s2;
	s1.push(4);
	s1.pop();
	s2.push(make_pair(1,'a'))
}

 

Set

key라고 불리는 원소들의 집합 중복이 허용되지 않음

  • insert() : 원소 삽입
  • begin() : 첫 번째 원소를 가르키는 iterator를 반환
  • end() : 마지막 원소를 가리키는 iterator를 반환
  • find(k) : 원소 k를 가리키는 iterator를 반환
  • size() : set의 원소 수
  • empty() : 비었는지 확인
#include <set> 
int main(int argc, const char * argv[]) { 
	set<int> s1; 
	s1.insert(1);
    set<int>::iterator it; 
	for (it = s1.begin(); it != s1.end(); it++) 
	{ 
		printf("%d ", *it); 
	}
	it = s1.find(7); 
}

 

Map

<key, value> 쌍으로 저장하는 자료구조, 중복이 허용되지 않으며 자동으로 오름차순 정렬

  • insert(make_pair(k,v)) : 원소 삽입
  • erase(k) : key값 k를 갖는 원소를 삭제
  • begin() : 첫 번째 원소를 가리키는 iterator를 반환
  • end() : 마지막 원소를 가리키는 iterator를 반환
  • find() : map의 원소 수
  • empty() : 비었는지 확인
#include <map>
int main(int argc, const char * argv[]) { 
	map<char, int> m1; 
	m1.insert(make_pair('a', 1));
    map<char, int>::iterator it; 
	for (it = m1.begin(); it != m1.end(); it++) { 
		printf("<%c %d> ", (*it).first, (*it).second); 
	} 
	it = m1.find('c'); 
}

 

Sort

C++의 algorithm 헤더에 포함되어 있다.

  • sort(first, last) : 오름차순 정렬
  • sort(first, last, compare) : 내림차순 정렬
#include<algorithm>

bool compare(int a, int b){
	return a > b;
}

sort(v.begin(), v.end())
sort(arr, arr + 10, compare);

 

반응형