vector<char*> T;
문자열 데이터 다 넣고 정렬하려고 하는데,
sort를 어떤식으로 해야하는지 도저히 모르겠네요.....ㅠ
sort(T.begin(), T.end(), [](char* a,char* b) {return strcmp( a, b ); });
이거나,
sort(T.begin(), T.end(), [](const vector<char*>& a, const vector<char*>& b) { return strcmp( ); });
???? 뭘 기준으로 정렬을 하겠다는겨
ㄴ T벡터에 들어간 문자열로 정렬을 하려고 합니다
아니 문자열의 뭘 기준으로 정렬을 하냐고
그리고 C++ 이면 std::string 하자...
ㄴ 알파벳 순 정렬입니다.
string 으로는 해보았는데 char*로도 테스트를 해보고싶어서요
오우야.... 알파벳 순 정렬이면 한 글자 한 글자 다 비교하는 함수를 만드셔야겠는데..
그리고 char* 로 테스트해볼 이유가 전혀 없어. C++에서 char*의 벡터를 만드는건 나쁜 생각이거든
strcmp로는 불가능한건가요??
string과의 속도차이가 있다고 해서 관찰해볼까 했습니다
strcmp 는 두 char* 가 담는 문자열이 '일치한지'를 확인하는 함수일 뿐이야. 어느게 알파벳 순으로 앞선지 확인하는게 아니라. 그리고 본인이 게임 만드느라 엄청난 메모리, 속도 한계속에서 코딩을 하는게 아니면 전혀 의미없는 속도비교임
ㄴ 현재 게임과 재학중입니다.. ㅎ 그렇다면 비교하는 함수를 따로 만들어서 돌리는 방법이 있다는 말씀이시군요
답변 감사합니다
보통 게임업계에서는 string을 별로 안 좋아해. 국내 게임 업계는 표준 STL과 모던 C++을 상당히 좋아하는 것 같던데. EA, 블리자드를 비롯한 메이저 게임 개발사에서는 표준STL 들이 자신들의 필요에 비해 비효율적이라고 얘기하더라고. 특히 std::string을 안 좋아하고 대신 자체적인 문자열 객체를 만들어쓰는 경우가 많다고 함. EA STL 한번 보시면 될듯. 게임업계를 비롯한 곳들의 수요 때문에 지금 flat container 라고 하는 것들을 표준 STL에 넣으려고 하고 있고
아 string 안 좋아하는게 메모리 관련 이유였던걸로 기억하는데 정확히는 기억이 안난다. Cppcon 블리자드 개발자 발표에서 나왔던건데
ㄴ 좋은 정보 정말 감사합니다! 관심가져주셔서 고맙습니다.