본문 바로가기

Algorithm/Lecture

알고리즘 풀이를 위한 C/C++/STL 기초 정리 - C++언어편

## // C/C++/STL 기초

 

[https://docs.google.com/document/d/1xrhb-6Vm5_0zd2iImbdg_4kN2cTnY-ZSzyrFAavwABI/edit?usp=sharing](https://docs.google.com/document/d/1xrhb-6Vm5_0zd2iImbdg_4kN2cTnY-ZSzyrFAavwABI/edit?usp=sharing)

 

Algorithm Note - 1. C/C++/STL

// C/C++/STL 기초 ------------------------------------------------------------------------------------------ C언어 //1.1 포멧 문자열 int %d 10진수 %x 16진수 %o 8진수 long long %lld %I64d char %c char* %s float %f double %lf long double %Lf //1.2 TestCase 또는 EOF 받기 //Tets

docs.google.com

 

 

2. C++ 입출력 기본

 

//2.1 한줄 다 입력 받기

getline(cin,s); // s는 stirng 형으로

 

//2.2 출력시 소수점 처리하기

#include<iomanip>

setprecision(5)

fixed

eg)

double f = 3.1415926535;

cout<<setprecision(5)<<f; //앞에서 5번째까지 출력(반올림적용)

 

cout<<fixed<<setprecision(5)<<f; //소수점 자리부터 5번째 가지 출력(반올림 적용)

 

//2.3 출력 속도비교

cout<<i<<endl; //4272msec 개행 + 스트림을 flush하기때문에 많은 시간이 걸린다.

cout<<i<<'\n'; //36msec

printf("%d\n",i); //20msec

 

//2.4 cin/cout 속도 올리기 (scanf/printf와 혼용하지 말것!)

main바로 다음에

 

    cin.tie(NULL); cout.tie(NULL);

    ios_base::sync_with_stdio(false);

 

//2.5 C++11 의 auto

vector<int> d;

for(auto it = d.begin(); it != d.end(); it++){...}

for(auto& k:d){...}

 

//2.6 Range based for

vector<int> a = {1,2,3,4,5};

a.size(); // element수 반환 unsinged long long 형태

for(auto k : a){...}//값 복사 방식으로 순환

for(auto& k : a){...}//참조 방식으로 순환 // 더 좋은 성능

 

//2.7 C 스타일,C++ 스타일 의 string

const char cstr[] = "string"; // foreach돌리면 7번

string str = "string"; // foreach 돌리면 6번

// C스타일의 문자열에는 null이 포함되어 있기 때문 !!!

 

//2.8 C++ 람다 함수 Lamda Function 익명 함수(함수의 형태인데 이름이 없음)

 

구성 : [캡처](함수 인자){함수 내용}

eg) cout<<[](int x,int y){return x+y;}(1,2)<<"\n";

 

eg) auto sum = [](int x,int y){return x+y;};

sum(1,2);

 

eg)

auto f = [&](){..} //외부변수 모두 참조하려면 캡처에 &쓰기

 

    auto f = [&x,y](){...} //외부면수 x만 참조,y는 값 복사

 

    auto f = [&x,y]() mutable {...}// 하지만 잘 안됨..(?)

 

eg)

#include<functional> 에

  

 function<int(int,int)> sum = [](int,int){....}

function<int()>

function<void()>

등등의 자료형 하지만 auto 써라.

  

eg) 람다로 recursion 피보나치 구현 또는 vector에 람다 넣고 foreach돌리면서 사칙연산 해보기~

 

 

DOS IMPACT - WEB Developer

KIM DO YOUNG

WEB : REACT JS | REACT NATIVE | GraphQL PRISMA