7월, 2017의 게시물 표시

STL container.emplace ...

C++11의 컨테이너에 emplace 시리즈 메소드가 생겼다. 요놈들은 뭐하는 놈들일까? 일단 내가 전혀 뜻을 모르는 영어단어라 사전을 찾아보니, '설치하다'라고 나온다. 이게 뭐여...

형태도 얄딱꾸리하게 생긴 녀석이다.

template< class... Args > iterator emplace( const_iterator pos, Args&&... args );
이렇게 생긴 녀석인데, 하는 일은 insert나 push_back/push_front 랑 비슷하다. 컨테이너에 원소 하나를 추가하는 일을 한다.

다만 기존 insert/push 시리즈는 넣을 객체를 caller에서 예쁘게 만들어서 전달하는데 이 과정에서 의도치 않게 임시객체가 뿅~하고 만들어지고 사라지는 부하가 생길 수 있다.

반면, emplace는 노드에 추가할 때, 주어진 인자(위에서 args)를 이용하여 객체의 생성자를 호출한다. 따라서 임시객체를 만들지 않거나, 임시객체 생성횟수를 줄여준다.

어지간한 경우에 emplace류가 insert/push류보다 빠르다고는 되어 있는데, effective c++이나 modern c++에서 찾아봐야겠다. 뭔가 함정이 있을 것 같은 느낌이 있달까.

* Fundamental types(int, char, long ...)에게는 아무런 의미가 없다~

Bash Aliases

현재 개인적으로 사용하고 있는 ~/.bash_aliases 내용.


[ $- != *i* ]] && return export TERM='screen-256color' export PATH=${PATH}:~/.local/bin export CXXFLAGS=-std=c++14 powerline-daemon -q POWERLINE_BASH_CONTINUATION=1 POWERLINE_BASH_SELECT=1 . /usr/share/powerline/bindings/bash/powerline.sh export EDITOR=vim alias apt='sudo apt' alias apt_info='apt-cache show' alias apt_qf='dpkg --search' function apt_instlist () { dpkg --list | tail -n +7 | awk '{print $2}' | sort -u } function apt_list () { apt-cache dumpavail | grep '^Package: ' | awk '{print $2}' | sort -u } function apt_remo…

전등 스위치 교체

이미지
한 두 달 전부터 작은 방 벽 스위치를 눌러도 불이 들어오지 않았다. 전세집이고 잘 사용하지 않는 방이라 그냥 두었는데, 갈 수록 심해져서 벽 스위치를 갈기로 했다.

다이소에서 2,000원에 2구 벽 스위치로 교체하기로 했다.

먼저 두꺼비집에서 두꺼비를 잡고 전등 스위치를 내리고, 절연장갑 끼고 땀 뻘뻘 흘리며 벽 스위치를 분해하기 시작했다.

생각과 다르게, 각 등마다 전선 2개 씩 연결하지 않고, 선 하나는 공용으로 쓰더라.



사진에서 빨간선이 공용으로 쓰이는 선이다. 아래 스위치에 파란선과 빨간선이 같이 들어오고, 빨간선에서 위 스위치 한 쪽으로 짧은 검은선으로 점프했다.

사진을 못 찍었지만, 다이소의 스위치는 한 쪽을 미리 내부적으로 점프해놔서, 위 사진처럼 검은 점퍼선이 필요 없다.



여차저차 연결하고, 두꺼비집 스위치 올리고 테스트 하고 잘 되는 것 보고, 다시 조립했다.

2,000원에 스위치 갈고, 전등 잘 켜지는 것 보니 속이 다 시원하네. 쩝.