«c++» 태그된 질문

C ++는 범용 프로그래밍 언어입니다. 원래 C에 대한 확장으로 설계되었으며 유사한 구문을 갖지만 이제는 완전히 다른 언어입니다. C ++ 컴파일러로 컴파일 된 코드에 대한 질문에이 태그를 사용하십시오. 특정 표준 개정 [C ++ 11], [C ++ 14], [C ++ 17] 또는 [C ++ 20] 등과 관련된 질문에 버전 별 태그를 사용하십시오.

2
왜“시스템 사용”인가? 나쁜 습관으로 간주되지 않습니까?
저는 C ++ 배경을 가지고 있으며이 질문에 대한 답변을 완전히 이해하고 동의합니다. 왜 "사용 네임 스페이스 표준"입니까? 나쁜 연습으로 간주? 따라서 C #에 대한 경험이 있으면 정확히 반대편이 보입니다 using Some.Namespace;. 문자 그대로 모든 곳에서 사용됩니다. 유형 사용을 시작할 때마다 네임 스페이스에 대해 using 지시문을 먼저 추가합니다 (아직없는 경우). 로 …

2
A xor X = B + X에 대한 해를 구하는 알고리즘
정수 A와 B가 주어지면 정수 X를 찾으면 다음과 같습니다. A, B <2 * 1e18 A xor X = B + X 나는 수학을 사용하여이 방정식을 풀 수 있다는 것이 의심 스럽다. 이것은 3 년 전에 발생한 코딩 문제이며 지금까지도 스스로 해결할 수 없습니다. 지금까지 내 코드 : (이것은 무차별 대입 …
46 c++  xor 

3
std :: vector (ab)는 자동 저장을 사용합니다
다음 스 니펫을 고려하십시오. #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } 기본 스택 크기는 일반적으로 20MB보다 작기 때문에 대부분의 플랫폼에서 충돌이 발생합니다. 이제 다음 코드를 고려하십시오. #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); } 놀랍게도 충돌합니다! 역 …

3
컴파일 타임에 다차원 std :: vector의 깊이를 얻으려면 어떻게해야합니까?
다차원을 취하고 std::vector깊이 (또는 차원 수)를 템플릿 매개 변수로 전달 해야하는 함수가 있습니다. 이 값을 하드 코딩하는 대신 깊이를 값 으로 반환 하는 constexpr함수 를 작성하고 싶습니다 .std::vectorunsigned integer 예를 들면 다음과 같습니다. std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { { 4, 5}, …

2
많은 표준 라이브러리 유형의 C ++ 20에서 operator! =가 제거 된 이유는 무엇입니까?
에 따르면 cppreference , std::type_info::operator!=C ++ (20)로 제거됩니다, 그러나, std::type_info::operator==분명히 남아있다. 뒤에 추론은 무엇입니까? 나는 불평등을 무의미하게 비교하는 데 동의하지만 평등을 비교하는 것은 무의미 할 것입니다. 마찬가지로, operator!=예컨대 용기를 포함하는 많은 다른 표준 라이브러리 유형의 std::unordered_map::operator!=및 std::unordered_set::operator!=cppreference에 따른 C ++ 20에서 제거 될 것이다. 작성 if(!(id1 == id2))해야하는 if(id1 != …

5
집계 초기화 멤버가 누락되지 않도록 할 수 있습니까?
같은 유형의 많은 멤버가있는 구조체가 있습니다. struct VariablePointers { VariablePtr active; VariablePtr wasactive; VariablePtr filename; }; 문제는 구조체 멤버 중 하나 (예 :)를 초기화하는 것을 잊어 버린 경우 wasactive다음과 같습니다. VariablePointers{activePtr, filename} 컴파일러는 그것에 대해 불평하지 않지만 부분적으로 초기화 된 하나의 객체를 갖게됩니다. 이런 종류의 오류를 어떻게 방지 할 수 …


7
두 개의 제로 인수 생성자를 구별하는 관용적 방법
나는 이런 수업을 가지고있다 : struct event_counts { uint64_t counts[MAX_COUNTERS]; event_counts() : counts{} {} // more stuff }; 일반적 counts으로 그림과 같이 배열 을 기본값으로 초기화하려고합니다 . 그러나 프로파일 링으로 식별 된 선택된 위치에서 배열을 덮어 쓰려고한다는 것을 알고 있기 때문에 배열 초기화를 억제하고 싶지만 컴파일러는 그것을 알아낼만큼 똑똑하지 않습니다. …

2
C ++에서 SFINAE 기능에 접근
프로젝트에서 SFINAE 기능을 많이 사용하고 있으며 다음 두 가지 접근 방식 (스타일 이외)에 차이가 있는지 확실하지 않습니다. #include <cstdlib> #include <type_traits> #include <iostream> template <class T, class = std::enable_if_t<std::is_same_v<T, int>>> void foo() { std::cout << "method 1" << std::endl; } template <class T, std::enable_if_t<std::is_same_v<T, double>>* = 0> void foo() { …
40 c++  sfinae 


4
템플릿 메타 프로그래밍
누군가 첫 번째 템플릿 메타 프로그래밍 방식이 무한 루프가되는 이유를 설명해 줄 수 있지만 두 번째 템플릿은 올바르게 실행됩니다. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static const int …

2
함수에서 remove_reference가 작동하지 않는 이유는 무엇입니까?
다른 날 템플릿 메타 프로그래밍을 할 때 이상한 일이 발생했습니다. 기본적 으로이 주장은 (내가 예상 한대로) 지나치지 않습니다. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); 처음에는 함수 참조를 정의하는 구문 오류가 있다고 생각했지만이 주장은 통과하여 그렇지 않습니다. static_assert(std::is_same_v<void()&, void()&>); 또한 remove_referencecppreference에서 소스를 복사하여 직접 구현하려고 시도했지만 작동하지 않았습니다. 무슨 일이야?
38 c++  templates  types  c++17 



4
템플릿을 사용하여 함수 오버로드
템플릿을 사용하여 함수를 정의하려고하는데 형식 이름이 int 또는 anEnum (정의 된 열거 형)이되고 싶습니다. 나는 다음을 시도했지만 실패했다. template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} 내가하려고하는 것은 두 개의 오버로드 된 함수를 정의하는 대신 템플릿을 사용하는 것입니다. 프로그래머가 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.