«c++» 태그된 질문

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

1
Clang / Win의 vector <bool> 요소에서 std :: swap이 작동하지 않는 이유는 무엇입니까?
다음과 같은 코드가 있습니다. #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } vector&lt;bool&gt;제쳐두고 의 정신에 대한 논쟁 , 이것은 잘 작동했습니다 : Mac 용 Clang Windows 용 Visual Studio Linux 용 GCC 그런 다음 Windows에서 Clang을 사용하여 빌드하려고 시도하고 다음과 같은 오류가 발생했습니다. error: no …

1
std :: vector 범위 생성자가 명시 적 변환을 호출 할 수 있습니까?
다음 프로그램이 제대로 구성되어 있습니까? #include &lt;vector&gt; struct A { explicit A(int) {} }; int main() { std::vector&lt;int&gt; vi = {1, 2, 3, 4, 5}; std::vector&lt;A&gt; va(vi.begin(), vi.end()); } C ++ 17 [sequence.reqmts]에 따르면 X u(i, j); X시퀀스 컨테이너는 어디에 있습니까? T한다 EmplaceConstructible에 X에서 *i. 그러나 이전 단락에서는 다음과 같이 …
14 c++  c++17 

3
람다 함수 오버로드
간단한 로컬 람다 함수를 오버로드하는 방법은 무엇입니까? 원래 문제의 SSE : #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', …

3
const ref를 사용하는 포인터 대 멤버 함수에는 템플릿 함수가 작동하지 않습니다.
최근에 코드 반복을 해결하기 위해 템플릿 함수를 작성했습니다. 다음과 같이 보입니다 : template&lt;class T, class R, class... Args&gt; R call_or_throw(const std::weak_ptr&lt;T&gt;&amp; ptr, const std::string&amp; error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) { return std::invoke(fun, *sp, args...); } else { throw std::runtime_error(error.c_str()); } } int main() { …
14 c++  templates 

3
std :: array를 사용하는 std :: bit_cast
그의 최근 강연에서 "현대 C의 유형 말장난 ++" 티무르 Doumler는 말했다 그 std::bit_cast비트가 캐스팅에 사용할 수 없습니다 float에 unsigned char[4]C 스타일 배열은 함수에서 반환 할 수 없기 때문에. 우리는 std::memcpy비슷한 것을 reinterpret_cast&lt;unsigned char*&gt;(&amp;f)[i]잘 정의 할 때 C ++ 23 (또는 그 이후 버전)을 사용 하거나 기다려야 합니다. C ++ 20에서 …

1
C ++ nullptr 구현은 어떻게 작동합니까?
어떻게 nullptr작동 하는지 궁금 합니다. 표준 N4659 및 N4849는 다음과 같이 말합니다. 형식이 있어야합니다 std::nullptr_t. 당신은 그 주소를 취할 수 없습니다; 포인터와 멤버에 대한 포인터로 직접 변환 될 수 있습니다. sizeof(std::nullptr_t) == sizeof(void*); 로의 변환 bool은 false; 그것의 값은와 동일하게 정수형으로 변환 될 수 (void*)0있지만, 거꾸로되지는 않는다; 따라서 기본적으로와 같은 …

3
복사 목록 초기화? 이것이 왜 컴파일됩니까?
Microsoft Visual Studio Community 2019, V16.5.2를 사용하고 있습니다. 목록 초기화 를 테스트하고 싶습니다 다음 테스트 프로그램을 참조하십시오 : #include &lt;string&gt; void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } 오류 및 경고없이 컴파일됩니다. 왜? 런타임 오류가 발생합니다. Expression: Transposed pointer range 누군가 여기서 무슨 일이 …
13 c++ 

1
std :: is_constructible은 개인 생성자에 대해 일치하지 않는 값을 반환합니다
std::is_constructible개인 생성자 를 처리 하는 규칙은 무엇입니까 ? 다음 코드가 주어진다 : #include &lt;iostream&gt; class Class { private: Class() { } }; template &lt;typename T&gt; class Test { public: static void test() { std::cout //&lt;&lt; std::is_constructible&lt;Class&gt;::value &lt;&lt; std::is_constructible&lt;T&gt;::value &lt;&lt; std::endl; } }; int main() { Test&lt;Class&gt;::test(); } 이것은 프린트 0( …
13 c++  typetraits 

1
템플릿 클래스의 구조체에서 C ++ 컴파일러 문제
다음 코드는 gcc 또는 clang으로 컴파일 되지 않습니다 . template&lt;class T&gt; class foo{}; template&lt;class T&gt; class template_class_with_struct { void my_method() { if(this-&gt;b.foo &lt; 1); }; struct bar { long foo; } b; }; 오류 메시지는 error: type/value mismatch at argument 1 in template parameter list for 'template&lt;class T&gt; class foo' …

3
함수가 정의 된 유형에 대해서만 함수 템플릿 내에서 함수 실행
입력 할 때 다양한 유형을 취하는 함수 템플릿이 있습니다. 이러한 유형 중 하나만 getInt()기능이 있습니다. 따라서 코드가 해당 유형에 대해서만 함수를 실행하기를 원합니다. 해결책을 제안하십시오. 감사 #include &lt;type_traits&gt; #include &lt;typeinfo&gt; class X { public: int getInt(){ return 9; } }; class Y{ }; template&lt;typename T&gt; void f(T&amp; v){ // error: …

2
const expr을 그렇게 빨리 평가할 수있는 방법
컴파일 타임에 평가되는 const 표현식을 시험해 보았습니다. 그러나 컴파일 타임에 실행될 때 엄청나게 빠른 예를 들었습니다. #include&lt;iostream&gt; constexpr long int fib(int n) { return (n &lt;= 1)? n : fib(n-1) + fib(n-2); } int main () { long int res = fib(45); std::cout &lt;&lt; res; return 0; } 이 코드를 …
13 c++  const  constexpr 

6
C ++에서 일반 구조체를 비교하는 방법은 무엇입니까?
일반적인 방식으로 구조체를 비교하고 싶습니다. 이와 같은 작업을 수행했습니다 (실제 소스를 공유 할 수 없으므로 필요한 경우 자세한 내용을 요청하십시오). template&lt;typename Data&gt; bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&amp;data1; void* dataStart2 = (std::uint8_t*)&amp;data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } 이것은 두 구조체 인스턴스가 동일한 멤버를 가지고 …

4
C ++ 11에서 StoreLoad 장벽을 달성하는 방법?
고전적인 문제의 변형을 해결하는 휴대용 코드 (Intel, ARM, PowerPC ...)를 작성하고 싶습니다. Initially: X=Y=0 Thread A: X=1 if(!Y){ do something } Thread B: Y=1 if(!X){ do something } 하는 목표는 모두 스레드가 수행되는 상황을 방지하는 것입니다something . (아무것도 실행되지 않으면 괜찮습니다. 이것은 한 번만 실행되는 메커니즘이 아닙니다.) 아래의 내 추론에 …

4
cppreference에서 완화 된 순서에 대한 설명이 잘못 되었습니까?
cppreference.com 의 설명서std::memory_order 에는 완화 된 주문의 예가 ​​있습니다. 편안한 주문 태그 memory_order_relaxed가 지정된 원자 작업 은 동기화 작업이 아닙니다. 동시 메모리 액세스간에 순서를 부과하지 않습니다. 원 자성 및 수정 순서 일관성 만 보장합니다. 예를 들어 x와 y가 처음에 0 인 경우 // Thread 1: r1 = y.load(std::memory_order_relaxed); // A …

3
200000 개 이상의 요소를 포함하는 2 개의 배열 요소로 구성된 최소 제품을 찾는 가장 빠른 방법
배열이 a[n]있습니다. 번호 n는 우리에 의해 입력됩니다. 다음 a[i]과 같은 a[j]경우 의 최소 ​​제품을 찾아야합니다 . 1) abs(i - j) &gt; k 2) a[i] * a[j]최소화 여기 내 해결책이 있습니다 (매우 순진합니다). #include &lt;iostream&gt; using namespace std; #define ll long long int main() { ll n,k; cin &gt;&gt; n &gt;&gt; …

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