기타: 123개의 글
C++11부터 지원하는 람다식은 익명 함수를 정의하는 식입니다. 익명 함수는 람다라고 불립니다. 익명 함수, 즉 람다는 함수의 몸체는 있지만 이름이 없습니다. (어떤 책을 읽어보면 람다식은 "변수에 저장할 수 있는 로직이다"라고 정의합니다.) 람다식은 함수 포인터와 함수 객체에 비해 다음과 같은 장점이 있습니다. 1. 코드 상으로 별도의 클래스를 구현하지 않아도 된다. 2. 변수의 상태 유지가 가능하다. 다음은 람다 함수의 예시입니다. sort(x, x+n, [](float a, float b){ return (abs(a) > abs(b)); }); STL의 predicate 부분에 람다 함수를 작성함으로써 sort 함수가 어떤 기준으로 정렬할 것인 지를 명시했습니다. 아래는 MSDN에 있는 람다식 구문..
vector는 C++ STL에서 쓰이는 선형 자료구조입니다. 이 vector를 쓸 때는 주의해야할 점이 있습니다. 바로 vector를 다른 vector에 대입할 때죠. vector는 기본적으로 다른 vector에 대입될 때 모든 요소들을 그 벡터에 복사하게 됩니다. 그럼으로써, 오버헤드가 발생하게 되죠. int main(void) { int N = 100000; vector test(N, -1); // Code for(int i=0; i< N; ++i){ vector dummy = test; } // } 위의 코드는 상당히 단순합니다. -1을 N만큼 초기화한 vector를 또 N만큼 반복하여 다른 벡터에 복사하는 코드죠. 이 코드의 수행 시간은 다음과 같습니다. [Finished in 3.8s] 만일 단..
C++에서의 시간 측정 코드 예시입니다. #include #include #include using namespace std; int main(void) { clock_t begin, end; begin = clock(); // Code // end = clock(); cout
표준 출력 시, 실수를 출력할 때 정확도를 조정하는 예제입니다. #include #include using namespace std; int main(void) { streamsize prec = cout.precision(2); cout
C++에서 :: 는 범위 지정 연산자로서 함수나 변수명 등을 namespace에 따라 구분할 때 사용됩니다. namespace는 명칭 영역이라는 말 그대로 변수나 함수들이 선언된 범위, 묶음이라고 생각하시면 됩니다. std::string 위의 string t는 std namespace영역에서의 데이터 타입 string을 쓰겠다는 의미입니다. 조금 더 살펴 보면, #include #include using namespace std; namespace A{ void hello(){ cout
C++에서 표준 입출력 코드는 다음과 같습니다. cin >> buf; 위 코드는 공백과 end-of-file 플래그를 만날 떄까지 문자들을 buffer에 저장합니다. 그리고 종료시에는 buffer에 있는 값들을 buf 변수에 저장하게 되죠. buffer에다 값을 저장하는 이유는 출력 요청 때마다 생기는 오버헤드를 줄이기 위해서 입니다. 출처: https://engkimbs.tistory.com/42?category=688856 [새로비]
템플릿은 제너릭 프로그래밍을 C++에서 구현하기 위해 도입된 개념입니다. template 키워드를 통해 구현하죠. 제너릭 프로그래밍이란 어떤 데이터의 형식에 의존하기 않고 하나의 값이 여러 다른 데이터 타입들을 가질 수 있도록 하여 재사용성을 높일 수 있도록 한 프로그래밍 방식이죠. 예를 들어보죠. int add(int x, int y) { return x + y; } double add(double x, double y) { return x + y } 두 수를 더하는 간단한 함수입니다. 하지만 c++에서는 실수와 정수를 표현하는 데이터 타입이 다르기 때문에 만약 각각의 데이터 타입에 맞는 함수를 구현하려면 오버로딩을 통해 각 데이터 타입에 맞는 함수를 다시 작성해야 합니다. 두 개 정도야 좀 불편하더라..
참조문서 : https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/ 1. 출력 echo : 자동 줄바꿈 printf : c언어랑 비슷 2. 주석 #!/usr/bin/env bash # 3. 함수 function 을 써도되고 생략해도 된다. 함수선언이 호출 뒤에있으면 에러가 발생한다. (command not found) 에러가 나도 밑에꺼는 마저 실행되는 듯 인자 넘기기 : 함수 인자1 인자2 ... 4. 변수 변수 할당은 = 앞뒤에 공백이 없어야만 된다. (있으면 command not found 발생) 홀따옴표, 쌍따옴표 다 되는 듯 선언된 변수는 기본적으로 전역변수이다. 해당 스크립트에서만 유효하다. 다른 스크립트(A.sh 내부에서 B.sh 를 호출하는 상황) 에..
참조문서 : https://www.w3schools.com/xml/ 1. 문서 분류 XML 문서에는 정형식 문서(well-formed)와 유효한 문서(valid)가 있다. 정형식 문서 : XML 문법과 규칙에 맞게 만들어진 오류가 없는 문서. 유효한 문서 : XML 문서를 표준화할 목적으로 문서형태정의(DTD)에 따라 만든 문서 2. 문서 구조 XML 문서는 아래와 같은 구조로 이루어져 있다. XML 선언부 DTD, XML 스키마 선언, 네임스페이스 선언 XML 태그와 데이터 XML 선언부 인코딩과 독립형 여부는 선택 속성이다. 인코딩 기본값은 UTF-8이다. 독립성 여부는 yes가 기본 값이며 해당 문서를 해석할 때 외부 DTD 문서 참조해야하는 지 여부를 XML 파서에게 전달한다는 뜻이다. 주석 를 ..
참조문서 : https://www.w3.org/TR/REC-xml/ json 만세 시대에 XML을 왜 학교에서 가르치는지 의문이 들지만.... 기존 서비스들이 XML로 된 경우도 꽤 있을꺼고.. 그래도 알아야하지 않겠나! 하며 시작해본다ㅋㅋ 1. XML 이란? Extensible Markup Language의 약자이다. 웹에서 구조화한 문서를 표현하고 전송하도록 설계한 마크업 언어이다. XML은 문서내용에 대한 구조와 의미를 기술하기 위한 언어이다. W3C에서 개발됐고, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어(메타언어)이기도 하다. 다양한 표현이 가능하고, 확장성이 뛰어나며 간단하다. 이러한 XML을 이용해 수학용 마크업 언어인 MathML, 화학용 마크업..