전체 글 7511

함수 템플릿의 기본 템플릿 인수

기본 템플릿 인수가 클래스 템플릿에서만 허용되는 이유는 무엇입니까? 멤버 함수 템플릿에서 기본 유형을 정의 할 수없는 이유는 무엇입니까? 예를 들면 : struct mycclass { template void mymember(T* vec) { // ... } }; 대신 C ++에서는 기본 템플릿 인수가 클래스 템플릿에서만 허용되도록 강제합니다. 기본 템플릿 인수를 제공하는 것이 좋습니다. 예를 들어 정렬 함수를 만들 수 있습니다. template > void sort(Iterator beg, Iterator end, Comp c = Comp()) { ... } C ++ 0x는이를 C ++에 도입합니다. Bjarne Stroustrup의이 결함 보고서 : 함수 템플릿에 대한 기본 템플릿 인수 및 그가 말하..

개발/C++ 2020.09.30

4x4 행렬 반전

4x4 매트릭스를 반전하는 방법에 대한 샘플 코드 구현을 찾고 있습니다. Gaussian eleminiation, LU 분해 등이 있다는 것을 알고 있지만 자세히 살펴 보는 대신 실제로이 작업을 수행 할 코드를 찾고 있습니다. 언어 이상적으로는 C ++, 데이터는 열 우선 순서로 16 개의 부동 소수점 배열로 제공됩니다. 여기: bool gluInvertMatrix(const double m[16], double invOut[16]) { double inv[16], det; int i; inv[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] + m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m..

개발/C++ 2020.09.26

C ++ 0x에서 해시 값을 어떻게 결합합니까?

C ++ 0x는 hash (...)를 추가합니다. 그러나 부스트에 제시된 것처럼 hash_combine 함수를 찾을 수 없습니다. 이와 같은 것을 구현하는 가장 깨끗한 방법은 무엇입니까? 아마도 C ++ 0x xor_combine을 사용하고 계십니까? 글쎄, 그냥 부스트 녀석들이했던 것처럼하세요 : template inline void hash_combine(std::size_t& seed, const T& v) { std::hash hasher; seed ^= hasher(v) + 0x9e3779b9 + (seed2); } 이 솔루션을 찾는 다른 사람들에게 유용 할 수 있으므로 여기에서 공유하겠습니다. @KarlvonMoor 답변에서 시작하여 여러 값을 함께 결합해야하는 경우 사용이 더 간결한 가변 템..

개발/C++ 2020.09.26

벡터를 함수에 전달하는 방법은 무엇입니까?

벡터를 함수에 대한 인수로 보내려고하는데 어떻게 작동하는지 알 수 없습니다. 여러 가지 방법을 시도했지만 모두 다른 오류 메시지를 표시합니다. 이 부분 만 작동하지 않기 때문에 코드의 일부만 포함합니다. (벡터 "random"은 0에서 200 사이의 임의의 값으로 채워지지만 정렬 됨) 코드 업데이트 : #include #include #include #include using namespace std; int binarySearch(int first, int last, int search4, vector& random); int main() { vector random(100); int search4, found; int first = 0; int last = 99; found = binarySearch..

개발/C++ 2020.09.26

C에서 C ++ 함수를 호출하는 방법은 무엇입니까?

나는이 사실을 알고. C ++에서 C 함수 호출 : 내 응용 프로그램이 C ++이고 C로 작성된 라이브러리에서 함수를 호출해야했다면 다음을 사용했을 것입니다. //main.cpp extern "C" void C_library_function(int x, int y);//prototype C_library_function(2,4);// directly using it. 이것은 C_library_function이라는 이름을 엉망으로 만들지 않으며 링커는 입력 * .lib 파일에서 동일한 이름을 찾고 문제가 해결됩니다. C에서 C ++ 함수 호출 ??? 하지만 여기서는 C로 작성된 대형 애플리케이션을 확장하고 있으며 C ++로 작성된 라이브러리를 사용해야합니다. C ++의 이름 변경이 여기서 문제를 일으키고 ..

개발/C++ 2020.09.26

C ++ 함수 템플릿 부분 전문화?

아래 코드는 클래스의 부분 전문화라는 것을 알고 있습니다. template class MyClass { … }; // partial specialization: both template parameters have same type template class MyClass { … }; 또한 C ++에서는 함수 템플릿 부분 전문화를 허용하지 않는다는 것을 알고 있습니다 (전체 만 허용됨). 하지만 내 코드는 하나 / 동일한 유형 인수에 대해 함수 템플릿을 부분적으로 전문화했음을 의미합니까? Microsoft Visual Studio 2010 Express에서 작동하기 때문입니다! 아니라면 부분 전문화 개념을 설명해 주시겠습니까? #include using std::cin; using std::cout; u..

개발/C++ 2020.09.26

사용하지 않는 반환 값을 무효화하는 이유는 무엇입니까?

int fn(); void whatever() { (void) fn(); } 사용하지 않은 반품 가치를 무효화 할 이유가 있습니까, 아니면 완전한 시간 낭비라고 생각하는 것이 맞습니까? 후속 조치 : 꽤 포괄적 인 것 같습니다. 자체 문서화 코드가 주석보다 낫기 때문에 사용하지 않는 반환 값을 주석 처리하는 것보다 낫다고 생각합니다. 개인적으로 불필요한 소음 이니까이 경고를 끄겠습니다. 그것 때문에 벌레가 도망 치면 내 말을 먹어 볼게 ... David의 대답은이 함수가 반환하는 것을 알고 있지만 명시 적으로 무시하고 있음을 다른 "개발자"에게 명시 적으로 보여 주려는 동기를 거의 다룹니다. 이는 필요한 오류 코드가 항상 처리되도록하는 방법입니다. C ++의 경우 전체 정적 캐스트 표기법을 사용하는 것이..

개발/C++ 2020.09.24
728x90