안녕하세요 🙂 큰돌님 교안 108p에 있는 예제코드를 제가 insert와 erase를 이해하기 위해서 아래와 같이 변경하였는데요. #include <bits/stdc++.h> using namespace std; list<int> a; void print(list<int> a) { for (auto it : a) cout << it << " "; cout << '\n'; } int main() { for (int i = 1; i <= 3; i++) a.push_back(i); // a = 1 2 3 for (int i = 1; i <= 3; i++) a.push_front(i); // a = 3 2 1 1 2 3 auto it = a.begin(); it++; a.insert(it, 1000); // 3 1000 2 1 1 2 3 a.insert(it, 2000); // 3 1000 2000 2 1 1 2 3 print(a); it = a.begin(); it++; cout << "*it : " << *it << '\n'; a.erase(it); print(a); cout << "*it : " << *it << '\n'; a.pop_front(); a.pop_back(); print(a); cout << a.front() << " : " << a.back() << '\n'; a.clear(); return 0; } 다음과 같이 변경해서 출력하면, 3 1000 2000 2 1 1 2 3 *it : 1000 3 2000 2 1 1 2 3 *it : 2 2000 2 1 1 2 2000 : 2 이렇게 나오는데, insert와 erase 메서드 모두 매개변수로 전달받은 iterator에다가 각각의 기능을 실행한 뒤 그 다음 위치(그 다음 인덱스)를 가리키도록 바꿔주는 걸까요? 제 예상으로는 출력의 두 번째 *it 이 2000으로 나올 것으로 예상했는데, 2가 나와서 a.erase(it); 를 했을 때, it이 인덱스 1을 가리켜서 1000을 지우고 난 뒤, 그 다음 인덱스인 2를 가리키게 돼서 2를 가리키게 된 것으로 이해하였는데 맞을까요?? 마찬가지로 위의 insert도 인덱스 1 위치에서 삽입을 한 뒤, it은 인덱스 2를 가리키게 되고, 또 insert 해서 마지막엔 it이 인덱스 3을 가리키는 로직으로 이해하였습니다! 혹시 이러한 로직이 맞다면, list만 이런 것인지 다른 자료구조의 insert도 이런지 궁금합니다! 감사합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
올려주신 코드를 빌드해보려 해도 MSB3073 -WaitMutex -FromMsBuild 에러가 발생합니다. 혹시 언리얼과 연동하기전에 기본적으로 해야할 설정이 있나요?? 비주얼스튜디오 인스톨에서 SDK와 언리얼 관련 내용은 다 다운로드 하였습니다. 언리얼 설정 시 기본 설정이 있다면 알려주시면 감사하겠습니다 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <bits/stdc++.h> using namespace std; struct Point { int y, x; }; bool cmp(const Point &a, const Point &b) { return a.x > b.x; } vector<Point> v; int main() { for (int i = 10; i >= 1; i--) { v.push_back({i, 10 - i}); } sort(v.begin(), v.end(), cmp); for (auto it : v) cout << it.y << " : " << it.x << "\n"; return 0; /* 1:9 2:8 3:7 4:6 5:5 6:4 7:3 8:2 9:1 10 : 0 */ } 질문드립니다 해당 vector는 Point를 기반으로 만들어진 벡터임을 알겠는데 v.begin()은 이터레이터를 반환하잖아요?? (주소값 반환) *v.begin()로 주소안의 값을 확인하려했는데 되지 않아 아마 struct 변수가 2개라 무엇을 기준삼지 않아 오류가 나는거같은데 혹시 값 반환하는 방법이 있을까요? 제가 이해한 내용이 틀렸다면 어떤식으로 이해해야하나요??
m2 맥북에어 사용자인데 cd /Library/Developer/CommandLineTools/usr/include 로 해서 들어가는 거까진 했는데 여기서 mkdir bits를 하니 permission denied 가 떠서 접근권한 문제인거 같은데 어떤거를 변경해야 할 지 몰라서 질문합니다.
빌드를 하게 되면 .cpp 파일끼리 서로 알게 되는 것으로 알고 있었는데, 선언과 정의를 분리했다고 해서 이전의 내용과는 다르게 추가적인 작업을 해 줘야 하는 것이 이해가 잘 가지 않아 다른 분들 질답글도 찾아보고 제 나름대로 생각해 봤는데, 아래 내용이 맞는지 확인 부탁드립니다. 빌드 시 각 .cpp 파일을 컴파일 하며 메모리를 잡고, 그 이후에 링킹을 진행한다. main 에서 인스턴스 my_array 에 대해 print() 를 호출하려면 my_array 선언 시 템플릿 인자로 넘겨주었던 데이터 타입과 일치하는 print() 의 body가 메모리에 잡혀있어야 한다. 어떤 데이터 타입에 대한 print() 를 메모리에 잡을지 알아야 하는 것이 관건이기에, 선언과 정의가 모두 헤더 파일에 위치한 경우에는 문제가 없다. 해당 헤더 파일을 include하는 .cpp 파일을 컴파일하면 해당 .cpp 파일 내에서 템플릿 인자로 사용되는 데이터 타입에 대한 인스턴스가 메모리에 잡히기 때문이다. 하지만 선언과 정의를 분리한 경우 print() 의 body가 위치한 .cpp 파일과 템플릿 인자를 통해 클래스를 사용하는 main 은 링킹이 되어야만 서로에 대하여 알 수 있는데, 정작 링킹 시점에서는 main 내에서 사용하는 특정 데이터 타입에 대한 멤버 함수의 메모리가 잡혀있지 않은 상태이므로 링킹 에러가 발생하게 된다. 따라서 explicit instantiation 으로 미리 특정 데이터 타입에 대한 print() 의 메모리를 할당 받도록 하면 링킹 시점에서는 주어진 템플릿 인자에 맞는 함수가 메모리에 위치하게 되어 문제가 해결된다. 이렇게 이해했는데 이게 맞는 걸까요...?
http://boj.kr/28d3e04e1fe9450c8b2adb485cb92e0c 위처럼 이진탐색을 재귀로 구현하여 풀었는데 지피티 + 지니 다 써도 어디에서 예외가 발생하여 틀리는지 모르겠습니다.. 강사님 어디가 틀린것이고 자신이 짠 코드가 어디가 잘못됬는지 잘 모르겠을 때 어떻게 분석할 수 있는지도 궁금합니다..
선생님 안녕하세요 ! 숨바꼭질 5번 26번 라인에 질문이 한 가지 있습니다. 기존에 올라온 질문들을 보면서 visited를 2차원 배열에 처리하여 홀/짝을 구분해야 한다는 것과 qSize를 활용하는 로직은 이해가 됐습니다. 그런데 26라인의 부분이 이해가 잘 되지 않습니다. visited[turn % 2][nx] = visited[(turn + 1) % 2][x] + 1; 왜 (turn+1)%2 + 1 을 기준으로 turn%2 에 값을 할당하는지 잘 모르겠습니다. bfs 로직에서 visited[next]에 값을 할당 할 때 here을 기준으로 +1을 하여 next를 할당하는데 (turn+1)%2 + 1 을 기준으로 할당한 것이 잘 이해가 안 됩니다. 항상 감사합니다. 새해 복 많이 받으세요!
http://boj.kr/982be70c6d1e4cd5bfcbf7f36bf6d7c8 큰돌님 풀이만큼 구현하기엔 아직 실력이 부족한듯하여, 우선 부딪혀보았습니다. 풀어는 보고 싶어서, 정말 단순하게 4분할 후 배열 생성하고, 전수 검사하고, 서로 다른 요소가 있다면 다시 재귀를 돌리는 식으로 구현해보았는데 어떤 문제가 있는 걸까요 ㅠ??
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
>libprotobuf.lib(reflection_ops.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(text_format.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(dynamic_message.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(any.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(wire_format.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(descriptor.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(extension_set_heavy.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(map_field.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(arenastring.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(message_lite.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(generated_message_reflection.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>libprotobuf.lib(message.obj) : error LNK2001: 확인할 수 없는 외부 기호 __std_init_once_link_alternate_names_and_abort 1>D:\UnRealProject\MMO\S1\Binaries\Win64\UnrealEditor-S1.dll : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다. 소스 그대로 받아 빌드를 했는데 에러가 나네요