Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
C++에서 Vector를 생성할 때 일일이 복사해 주거나 copy 메서드 혹은 assign 메서드를 활용할 수 있지만, 생성 시에 값을 복사해 주는 방법으로 복사 생성자(copy constructor)가 존재한다. 이는 복사 대상 Vector의 iterator를 활용하면 설정한 시작(first)과 끝(last)까지 순서대로 복사시켜 새로운 vector를 만들어준다. vector copyVector(first, last); void copyCheck() { vector vec = {1,2,3,4,5,6 }; vector subCopyVec(vec.begin() +1 , vec.begin() + 4); for (auto it = subCopyVec.begin(); it!= subCopyVec.end(); i..
백준 문제를 풀던 중 분명히 예제 입력에서는 제대로 된 출력이 나오는데도 정답 소스코드를 제출하는 경우 시간 초과가 발생하는 경우가 있었다. 아무리 코드를 뜯어보아도 최적화에는 문제가 없다고 생각했는데 cout에서 주로 개행을 위해 사용되는 endl을 '\n'으로 바꿔주자 정답을 맞힐 수 있었다. 그러한 이유는 다음과 같다. endl의 경우 스트림 버퍼의 끝에 \n을 삽입해주고 flush까지 수행하여 버퍼를 비워준다. std::cin과 같이 입력을 받을 경우, 이전의 데이터가 버퍼에 남아있으면 사용자의 값입력을 받지 않고 그대로 버퍼의 값을 사용한다. 즉 버퍼를 깨끗하게 지워주어야 다음 값을 입력받을 수 있다. 이때 flush를 통해 버퍼를 비워줄 수 있다. C에서는 fflush(stdin); 와 같이 ..
지금까지 배운 객체지향 언어는 Java와 C++ 이였는데, 필자는 C++를 먼저 접하고 Java를 공부했었다. 두 언어는 지향점이 다르더라도 둘 다 C언어 기반의 객체지향 언어라 비슷한 구조가 많다. 그런데 웬걸? 두 언어를 왔다 갔다 공부하다 보니 c++에서 계속 이해가 되지 않는 코드가 있었다. 아래의 예제 코드를 보자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; class Test{ public: Test(int n): data(n){} Test(const Test& rhs){ //복사 생성자 data = rhs.data; //rhs의 private멤버인 data접근이 가능하다..