std
C++ 객체 이동 std::move
에 정의됨 // C++ 14 이전에는 constexpr 아님! template constexpr typename std::remove_reference::type&& move(T&& t) noexcept; std::move 는 어떤 객체 t 가 이동 될 수 있음 을 알려준다. 이동 이라 하면 C++ 11 에 도입된 개념으로 t 가 가지고 있는 자원을 다른 객체에게 효율적으로 전달하는 것을 의미한다. std::move 된 객체를 함수에 전달한다면, 우측값 레퍼런스를 인자로 받는 함수(예를 들어서 이동 생성자, 이동 대입 연산자, vector 의 push_back 함수 같은 애들)가 오버로딩 되어서 선택된다. 참고로 우측값 레퍼런스 자체는 rvalue 가 아니라 lvalue 이기 때문에, 이동 생성자나 이동..
C++ 난수 생성 std::random + 생성 시간 측정하는 std::chrono 라이브러리
#include #include int main() { // 시드값을 얻기 위한 random_device 생성. std::random_device rd; // random_device 를 통해 난수 생성 엔진을 초기화 한다. std::mt19937 gen(rd()); // 또는 미리 범위를 지정 할 수가 있음 // std::mt19937 gen(1234); // 0 부터 99 까지 균등하게 나타나는 난수열을 생성하기 위해 균등 분포 정의. std::uniform_int_distribution dis(0, 99); for (int i = 0; i < 5; i++) { std::cout
C++ 비동기 (Asynchronous) 실행
C++에선 비동기로 함수를 실행하기 위해선 아래의 std 라이브러리들이 쓰여진다. std::future, std::promise std::shared_future std::packaged_task std::async future / promise 비동기적 실행을 통해서 하고 싶은 일은, 어떠한 데이터를 다른 쓰레드를 통해 처리하고, 그 처리된 데이터를 받아내는 것이라고 볼 수 있다. 즉, 처리해야되는 데이터를 미래에(future) 다시 돌려받겠다라는 약속(promise)라고 볼 수 있다. #include #include #include #include void worker(std::promise* p) { // 약속을 이행함. 해당 결과는 future에 들어가게 됨 p->set_value("some da..
컴파일 속도 향상 (시간 초과 오류)와 Stream (스트림)
ios::sync_with_stdio, cin.tie, cout.tie란? ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); Stream 우선 stream에 대한 이해가 먼저 필요하다 우리가 c언어와 c++언어를 가장 처음 배울 때 적는 것은 사실 아래에 두 헤더파일이다 각각은 stdio: standard input output iostream: input output stream #include #include 표준 스트림(standard streams)은 특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제(어느 정도까지는 윈도에도 해당함)에서 컴퓨터 프로그램과 그 환경(일반적으로 단말기) 사이에 미리 연결된 입출력 통로를 가리킨다. 우리..
C++ 출력(std::format)과 for-range loop 꿀팁
C++20에서 아주 재미난 기능이 새로 생겼다, 그것은 C#에서도 봤던(String.Format)과 매우 유사한 메커니즘을 가지고 있는 기능이다 헤더파일 을 필히 추가. #include #include #include #include #include #include using namespace std; int main() { map test_map; int size; cout > size; // 맵에 삽입 for (int i = 0; i > tmp_pair.first.first >> tmp_pair.first.second >> tmp_pair.second; test_map.insert(tmp_pair); } cout