c++ 템플릿으로 배열의 레퍼런스를 넘겨서 사이즈 정보를 따로 같이 넘겨주지 않고도 길이를 알아내게하는 꼼수(?)가 괜히 있는게 아닌데
익명(211.114)2022-09-06 13:35
답글
121.151/ 댓글쓰니까 딱 올리네
익명(211.114)2022-09-06 13:36
답글
정적배열은 사이즈 정보 가지고 있음ㅇㅅㅇ 포인터로 decay된 이후면 논점이탈아닌가
익명(211.52)2022-09-06 13:36
답글
실제 사용시의 입장에서는 디케이된 이후에는 포인터지 배열이 아니라는 것보다 내가 가지고 있는 배열을 어떻게 넘길것인가 하는 상황 자체가 더 중요한거임
익명(211.114)2022-09-06 13:37
답글
배열 자체에는 사이즈 정보가 있다라는 사실은 내가 써온 댓글만 봐도 당연히 알고있는거 아니겠음? 그걸 몰라서 댓글 다는거 같냐
익명(211.114)2022-09-06 13:38
답글
배열이 메모리의 연속이라는 부분이 더 중요하다고 생각하고 있음, 각 아이템의 총 갯수가 굳이 필요한지는 프로그램의 필요 또는 프로그래머의 관점이라고 생각함 - dc App
Gentoo(frech5679)2022-09-06 13:40
답글
니가 처음에 동적이든 정적이든 배열의 길이를 얻어낼 수 없다며… 정적배열은 얻어낼 수 있음 아니면 실제 사용할 땐 결국 매개변수로 포인터랑 배열크기를 따로 넘겨야 되니까 의미가 없다고 말하는건가 그건 본문글을 시원하게 넘겨짚는 듯?
익명(211.52)2022-09-06 13:40
답글
그러니까 그 프로그래머로서의 관점이 본문이잖아 당장 수많은 C 라이브러리들만 봐도 포인터 하나, 길이 하나씩 따로 넘겨야하는 API가 산더미인데 좀 불편하냐 C++에서 std::array로 기존 C배열을 대체하라는 격언은 뭐 괜히 있겠음
익명(211.114)2022-09-06 13:41
답글
그러니까 항상 배열을 다룰 때 배열주소랑 크기가 대롱대롱 같이 다녔으면 좋겠다는거 아님?
익명(211.52)2022-09-06 13:42
답글
애초에 넘기기 전에는 배열의 사이즈를 얻어내는 작업 자체가 의미가 없잖아 답답하다 C 배열을 두고 사이즈를 논하려면 당연히 넘길때가 기준인거임
익명(211.114)2022-09-06 13:42
답글
C++도 아니고 C에서 그걸 왜 요구하는지 모르겠음 ㄹㅇ루
익명(211.52)2022-09-06 13:44
답글
크기가 항상 같이 있지 그거 이해 못하는 애들은 2차원 이상의 배열을 포인터로 다루지 못함
익명(121.151)2022-09-06 13:44
답글
아니… C 얘기하는 무슨… 이해가 안되네
익명(211.52)2022-09-06 13:47
답글
당장 여려 크기의 타입을 받는 함수들은 어쩔수 없이 void* 로 포인터 받고 아이템 사이즈 총 사이즈 다 따로 받아야하고 하나의 타입만 사용하는 배열을 받는 함수면 애초에 아이템 크기를 아니 전체 크기만 알면 되는 거고 배열의 모든 내용을 사용하지 않는 함수는 어차피 어디까지 할 건지 사이즈를 받을 텐데 의미가 없다고 생각됨 - dc App
Gentoo(frech5679)2022-09-06 13:47
답글
Gentoo/ 수없이 많은 작업에서 배열 전체를 사용하기 때문에 그건 동의못함 많은 언어에서는 배열(이나 유사한 컨테이너)의 일부분에 대해서만 작업하길 원하면 길이를 넘기기보다는 서브어레이에 대한 뷰를 넘기는걸 선호하지
PascalCase(pascalcase)2022-09-06 13:50
답글
아니 넘길 때를 전제로 해도 따로 크기를 넘기나 대롱대롱 정보를 달고 있나 성능차이 날 일X 코드 한 자 더 적냐 마냐 차인데 C에서 이걸 왜 신경씀
대충 상상만 해봐도 오히려 배열크기를 넘겨줄 필요없는(흐름상으로 명시적으로 크기를 알고 있는) 함수라면 포인터로 decay될 때 정보를 잃는 방식이 조금이라도 성능이 나을거 같은데\
익명(211.52)2022-09-06 13:52
답글
파라미터를 다 따로 넘기냐 스트럭트로 넘기냐인데 스트럭트로 넘길 필요성이 없다고 느껴진다고 말하고 싶음 - dc App
Gentoo(frech5679)2022-09-06 13:53
답글
C 어레이의 스펙은 이미 정해진바니까 이 상황에서 또 구조체를 굳이 만들어서 넘기는 거야 당연히 오버고 그냥 따로 길이 넘기면 되는 문제가 맞겠지
PascalCase(pascalcase)2022-09-06 13:57
답글
ㅇㅇ 배열 앞에 숫자가 위치한 사이즈를 보존하는 배열을 넘기면 스트럭트랑 다를바가 없으니 그렇게 이야기한거 - dc App
Gentoo(frech5679)2022-09-06 14:00
답글
C라는 언어가 쓰이는 환경에서는 지금의 형태로도 충분한거 같고 언어 일반론으로는 여러가지로 불편을 초래하는 형태인 것도 맞는거 같음
PascalCase(pascalcase)2022-09-06 14:00
본문 작성자가 211.114가 말하는걸 염두에 뒀냐는 모르겠다만 아무튼 C처럼 간소한 구조라 도움이 되는 일도 많다 좀더 raw한 툴에 왜 이거 안되냐 저거 안되냐 말해봐야 소용이 없다
그렇게 커스텀 타입 만들어서 쓰셈
https://en.cppreference.com/w/cpp/container/array/at
c 배열에 c++ array를 가져오면 뭐하노...
동적 배열을 얘기하고 싶은 건가? - dc App
동적이든 정적이든 배열의 길이를 얻어낼수 없고 필요하면 따로 들고댕겨야하는걸 말하는거겠지
정적 배열은 sizeof쓰면 되잖아 - dc App
당연히 포인터로 decay된 이후 얘기겠지 decay 이전의 정적 배열이라면 애초에 사이즈 자체를 작성자가 정했으니 논외잖아
쓰니가 얘기하는 배열이 c언어에서의 배열과 아예 관계가 없다고 말하는 거임 - dc App
왜 관계가 없지 타입의 정확한 정의 같은거랑 상관없이 정적배열을 딴데 넘길때 그 사이즈도 같이 넘겨야하는 경우가 많은건 엄연한 사실임
https://ideone.com/rSg4dh
c++ 템플릿으로 배열의 레퍼런스를 넘겨서 사이즈 정보를 따로 같이 넘겨주지 않고도 길이를 알아내게하는 꼼수(?)가 괜히 있는게 아닌데
121.151/ 댓글쓰니까 딱 올리네
정적배열은 사이즈 정보 가지고 있음ㅇㅅㅇ 포인터로 decay된 이후면 논점이탈아닌가
실제 사용시의 입장에서는 디케이된 이후에는 포인터지 배열이 아니라는 것보다 내가 가지고 있는 배열을 어떻게 넘길것인가 하는 상황 자체가 더 중요한거임
배열 자체에는 사이즈 정보가 있다라는 사실은 내가 써온 댓글만 봐도 당연히 알고있는거 아니겠음? 그걸 몰라서 댓글 다는거 같냐
배열이 메모리의 연속이라는 부분이 더 중요하다고 생각하고 있음, 각 아이템의 총 갯수가 굳이 필요한지는 프로그램의 필요 또는 프로그래머의 관점이라고 생각함 - dc App
니가 처음에 동적이든 정적이든 배열의 길이를 얻어낼 수 없다며… 정적배열은 얻어낼 수 있음 아니면 실제 사용할 땐 결국 매개변수로 포인터랑 배열크기를 따로 넘겨야 되니까 의미가 없다고 말하는건가 그건 본문글을 시원하게 넘겨짚는 듯?
그러니까 그 프로그래머로서의 관점이 본문이잖아 당장 수많은 C 라이브러리들만 봐도 포인터 하나, 길이 하나씩 따로 넘겨야하는 API가 산더미인데 좀 불편하냐 C++에서 std::array로 기존 C배열을 대체하라는 격언은 뭐 괜히 있겠음
그러니까 항상 배열을 다룰 때 배열주소랑 크기가 대롱대롱 같이 다녔으면 좋겠다는거 아님?
애초에 넘기기 전에는 배열의 사이즈를 얻어내는 작업 자체가 의미가 없잖아 답답하다 C 배열을 두고 사이즈를 논하려면 당연히 넘길때가 기준인거임
C++도 아니고 C에서 그걸 왜 요구하는지 모르겠음 ㄹㅇ루
크기가 항상 같이 있지 그거 이해 못하는 애들은 2차원 이상의 배열을 포인터로 다루지 못함
아니… C 얘기하는 무슨… 이해가 안되네
당장 여려 크기의 타입을 받는 함수들은 어쩔수 없이 void* 로 포인터 받고 아이템 사이즈 총 사이즈 다 따로 받아야하고 하나의 타입만 사용하는 배열을 받는 함수면 애초에 아이템 크기를 아니 전체 크기만 알면 되는 거고 배열의 모든 내용을 사용하지 않는 함수는 어차피 어디까지 할 건지 사이즈를 받을 텐데 의미가 없다고 생각됨 - dc App
Gentoo/ 수없이 많은 작업에서 배열 전체를 사용하기 때문에 그건 동의못함 많은 언어에서는 배열(이나 유사한 컨테이너)의 일부분에 대해서만 작업하길 원하면 길이를 넘기기보다는 서브어레이에 대한 뷰를 넘기는걸 선호하지
아니 넘길 때를 전제로 해도 따로 크기를 넘기나 대롱대롱 정보를 달고 있나 성능차이 날 일X 코드 한 자 더 적냐 마냐 차인데 C에서 이걸 왜 신경씀 대충 상상만 해봐도 오히려 배열크기를 넘겨줄 필요없는(흐름상으로 명시적으로 크기를 알고 있는) 함수라면 포인터로 decay될 때 정보를 잃는 방식이 조금이라도 성능이 나을거 같은데\
파라미터를 다 따로 넘기냐 스트럭트로 넘기냐인데 스트럭트로 넘길 필요성이 없다고 느껴진다고 말하고 싶음 - dc App
C 어레이의 스펙은 이미 정해진바니까 이 상황에서 또 구조체를 굳이 만들어서 넘기는 거야 당연히 오버고 그냥 따로 길이 넘기면 되는 문제가 맞겠지
ㅇㅇ 배열 앞에 숫자가 위치한 사이즈를 보존하는 배열을 넘기면 스트럭트랑 다를바가 없으니 그렇게 이야기한거 - dc App
C라는 언어가 쓰이는 환경에서는 지금의 형태로도 충분한거 같고 언어 일반론으로는 여러가지로 불편을 초래하는 형태인 것도 맞는거 같음
본문 작성자가 211.114가 말하는걸 염두에 뒀냐는 모르겠다만 아무튼 C처럼 간소한 구조라 도움이 되는 일도 많다 좀더 raw한 툴에 왜 이거 안되냐 저거 안되냐 말해봐야 소용이 없다
C가 존나 옛날언어라 그래
그러면 메모리를 더 차지하잖아 c 처음 나올땐 메모리가 다이아몬드보다 비쌌어
병신들이 이렇게 많으니까 파이썬으로 코딩 시작하라 그러는듯 ㅇㅇ - dc App
니가 30년 전으로 돌아가볼래? ㅋㅋㅋㅋ