반응형

나만의 냉장고 앱에서 야끼소바 도시락을 주문하면 1+1이라길래 주문해봤다.

근데 맛이 별로라는 이야기가 자주 보여서 조금 후회 ㅠ

주문하고 이틀 뒤에 받을 수 있었다.

비주얼은 음...

그래도 생각했던 것보다 있을 것은 다 있는 모양새. 양배추, 숙주나물, 베이컨 등등. 양도 생각보다는 꽤 푸짐하게 보였다.

일단 사이드에 있는 것부터 먹어봤다. 타코야키 하나, 미니 오코노미야키(로 추정되는 무언가) 하나.

맛은 별로. 그냥 타코야키구나 생각만 드는 그 정도.

처음엔 ??? 무슨 맛인지 못 느꼈는데 잘 비벼서 먹다보니 여태까지 봤던 악평과는 별로 안 어울리는 것 같았다. 꽤 맛있게 먹음. 물론 1+1 3500원(=1750원)이라는 가격을 생각했을 때 좋았던 거지 3500원 다 내고 먹기는 조금 아까운듯.(어디까지나 편의점에서 스파게티 도시락 같은 거 먹는 것 보다는 같은 값이면 밥이 있는 도시락이 더 좋다는 개인적 취향)

일단 야끼소바 도시락 1+1 행사는 11월 1일까지라서 하나 더 주문했다. 11월 1일날 먹고 마지막 날에 한 번 더 주문할듯.

반응형
반응형

한 번 포스팅으로 정리해야겠다 생각이 들어서 정리해봤다.


1. 전통적인 for

for (int i = 0; i < 10; i++)
{
std::cout << i << std::endl;
}

우리가 C++에서 반복문을 얘기할 때 가장 흔하게 사용하는 for문이다. for문 내에서 사용하는 정수를 선언하고, 이 정수를 키우거나 줄이는 등 값을 바꾸며 반복하는 방법이다.

2. C++11부터 추가된 for

for(int i : {0, 1, 2, 3, 4, 5})
{
    std::cout << i << std::endl;
}

std::vector<std::string> name_vector;
for(const auto& element : name_vector)
{
    std::cout << element << std::endl;
}

Range-based for loop라고 부른다.

변수 선언과 조작 대신 내부적으로 반복자(iterator)를 이용하여 vector와 같은 컨테이너 전체의 원소에 대해 반복을 수행한다.

쓰다보면 기존 for문에 있던 인덱스값(i)이 안 보여 귀찮게 느껴질 수도 있는데, while문 쓸 때처럼 반복문 밖에 변수를 선언하고 가져다 쓰면 된다.

깔끔해 보이는게 가장 큰 장점. 성능이 더 좋고 그런 건 없다.


3. std::for_each(<algorithm>)

std::vector<std::string> name_vector{ "test1", "test2", "test3" };
std::for_each(name_vector.begin(), name_vector.end(), [](auto& input) {std::cout << input << std::endl; });

void print(std::string& input)
{
    std::cout << input << std::endl;
}
std::vector<std::string> name_vector{ "test1", "test2", "test3" };
std::for_each(name_vector.begin(), name_vector.end(), print);

for_each는 <algorithm> 헤더에 정의되어 있는 함수다. 그래서 std::for_each의 형태로 써야 한다.

반복자의 시작과 끝, 그리고 함수를 파라미터로 받는다. 마지막 파라미터는 람다 표현식으로도 나타낼 수 있다.


4. std::transform(<algorithm>)

std::string change(std::string& input)
{
    return std::string("Changed!");
}
std::vector<std::string> name_vector{ "test1", "test2", "test3" };
std::vector<std::string> result{ "result1", "result2", "result3" };

std::transform(name_vector.begin(), name_vector.end(), result.begin(), change);
//result = {"Changed!", "Changed!", "Changed!"}

transform도 반복자를 이용한 반복문이긴 한데, 결과를 다른 컨테이너에 저장하는 역할을 한다. 물론 원본 컨테이너에 바로 저장할 수도 있다. transform도 for_each와 마찬가지로 함수 부분을 람다 표현식으로 나타낼 수 있다.


같은 구현도 다른 함수를 이용해서 서로 다르게 구현할 수 있으니 필요에 따라 적절하게 반복문을 선택해서 만들면 될 것 같다.


덤. std::for_each_n(<algorithm>,C++17)
검색하다보니 C++17에서는 for_each_n이라는 것이 추가되는 모양이다. for_each에서 반복자의 끝 대신 반복자의 시작부터 n번 반복하도록 정수를 넣는 형태인 것 같다.




참고


반응형
반응형

아직 많이 하고 있긴 하지만 그래도 예전에 비해서는 인원이 줄어든 것 같은 느낌이 든다.

요즘은 많이 줄어들었지만 끝없는 욕설이 사람들을 너무 지치게 함.

그래도 일단 오버워치 시즌6 경쟁전 배치는 봤다.

시즌5 최고 3438 최종 3234. 거의 메르시만 함.

배치 경기 결과 7승 1무 1패. 배치도 거의 메르시로만 함.

10번째 판은 질 뻔했는데 상대방이 한 명 나가면서 추가시간에 끝까지 화물을 밀었고 다음 공격 때 또 화물을 끝까지 밀자 좌절한 상대방 측이 다 나감...

결과는?


평점 3262점.

혼자서 골드부터 차근차근 올라와 이제는 배치로 다이아를 먹고 시작하는 정도까지는 온 것 같다.

근데 계속 오버워치를 할 지는 글쎄...

메르시 한다는 이유로 보르시 소리 들어야 하고(요즘은 많이 줄어든듯. 차단 먹어서 줄어든 거였으면 오버워치 운영이 나아진 것일거고 배틀그라운드 하러 떠난거면...음) 버스 탔냐는 둥 소리까지 들으면 짜증이 안 날 수가 없다.

왜 이제서야 제재를 시작하는건지 의문... 더 빨리 시작했다면 그래도 지금보다는 이용자가 더 많지 않았을까.

반응형

+ Recent posts