«c++» 태그된 질문

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

1
C ++에서 숫자가 상수인지 아닌지에 대해 음수의 static_cast <unsigned>가 다른 이유
equal 이 false 를 의미하는 C ++ 규칙은 무엇입니까 ? 주어진: float f {-1.0}; bool equal = (static_cast&lt;unsigned&gt;(f) == static_cast&lt;unsigned&gt;(-1.0)); 예 : https://godbolt.org/z/fcmx2P #include &lt;iostream&gt; int main() { float f {-1.0}; const float cf {-1.0}; std::cout &lt;&lt; std::hex; std::cout &lt;&lt; " f" &lt;&lt; "=" &lt;&lt; static_cast&lt;unsigned&gt;(f) &lt;&lt; '\n'; std::cout &lt;&lt; …
28 c++  casting 

3
이 전환 연산자의 과부하가 선택된 이유는 무엇입니까?
다음 코드를 고려하십시오 . struct any { template &lt;typename T&gt; operator T &amp;&amp;() const; template &lt;typename T&gt; operator T &amp;() const; }; int main() { int a = any{}; } 여기서 두 번째 변환 연산자는 과부하 해상도에 의해 선택됩니다. 왜? 지금까지 내가 그것을 이해, 두 사업자에 추론된다 operator int &amp;&amp;() …

2
"this"가 람다에 의해 캡처 될 때 명시 적으로 사용해야합니까?
내가 찾은 예제 this는 람다에서 캡처 하여 명시 적으로 사용합니다. 예 : capturecomplete = [this](){this-&gt;calstage1done();}; 그러나 암시 적으로 사용할 수도 있습니다. 예 : capturecomplete = [this](){calstage1done();}; 나는 이것을 g ++로 테스트하고 컴파일했다. 이 표준 C ++입니까? (있는 경우 어떤 버전) 또는 어떤 형태의 확장입니까?

2
정렬되지 않은 그룹보다 정렬 된 그룹에서 그룹화 된 합계가 더 느린 이유는 무엇입니까?
나는 탭으로 구분 된 정수의 2 열을 가지고 있는데, 첫 번째는 임의의 정수이고, 두 번째는 그룹을 식별하는 정수이며,이 프로그램에 의해 생성 될 수 있습니다. ( generate_groups.cc) #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;ctime&gt; int main(int argc, char* argv[]) { int num_values = atoi(argv[1]); int num_groups = atoi(argv[2]); int group_size = num_values …
27 c++  performance 

3
C ++에서 두 번째 템플릿 인수를 추측하지 못하게하려면 어떻게해야합니까?
그 안에 어딘가에 다음 코드가 있는 C ++ 라이브러리 ( strf )를 사용하고 있습니다. namespace strf { template &lt;typename ForwardIt&gt; inline auto range(ForwardIt begin, ForwardIt end) { /* ... */ } template &lt;typename Range, typename CharT&gt; inline auto range(const Range&amp; range, const CharT* sep) { /* ... */ } } …

3
const 참조로 기본 인수 값을 반환해도됩니까?
아래 예제와 같이 const 참조로 기본 인수 값을 반환해도됩니까? https://coliru.stacked-crooked.com/a/ff76e060a007723b #include &lt;string&gt; const std::string&amp; foo(const std::string&amp; s = std::string("")) { return s; } int main() { const std::string&amp; s1 = foo(); std::string s2 = foo(); const std::string&amp; s3 = foo("s"); std::string s4 = foo("s"); }

2
std :: pair 내의 이니셜 라이저 목록
이 코드는 : #include &lt;iostream&gt; #include &lt;string&gt; std::pair&lt;std::initializer_list&lt;std::string&gt;, int&gt; groups{ { "A", "B" }, 0 }; int main() { for (const auto&amp; i : groups.first) { std::cout &lt;&lt; i &lt;&lt; '\n'; } return 0; } 컴파일하지만 segfault를 반환합니다. 왜? gcc 8.3.0 및 온라인 컴파일러에서 테스트되었습니다.
26 c++  std  std-pair 

3
C ++에서 유형 목록의 직교 곱을 작성하는 방법은 무엇입니까?
자기 설명. 기본적으로 다음과 같이 유형 목록이 있다고 가정하십시오. using type_list_1 = type_list&lt;int, somestructA&gt;; using type_list_2 = type_list&lt;somestructB&gt;; using type_list_3 = type_list&lt;double, short&gt;; 가변 목록 유형일 수 있습니다. 직교 제품의 유형 목록을 얻으려면 어떻게합니까? result = type_list&lt; type_list&lt;int, somestructB, double&gt;, type_list&lt;int, somestructB, short&gt;, type_list&lt;somestructA, somestructB, double&gt;, type_list&lt;somestructA, somestructB, short&gt; &gt;; …

4
void * function ()은 함수에 대한 포인터 또는 void *를 반환하는 함수입니까?
의 의미가 혼동 void *function()됩니다. 함수에 대한 포인터 void*입니까 아니면 함수를 반환 합니까? 나는 항상 포인터를 반환하는 재귀 함수로 데이터 구조에서 사용했지만 멀티 스레딩 ( pthread) 의 코드를 볼 때 동일한 함수 선언이 있습니다. 이제는 차이점이 무엇인지 혼란 스럽습니다.

4
지시문 매크로 비교
#if다음 코드 의 조건이 충족되는 이유는 무엇입니까? #include &lt;iostream&gt; #define VALUE foo int main() { #if VALUE == bar std::cout &lt;&lt; "WORKS!" &lt;&lt; std::endl; #endif // VALUE }

4
일반 유형으로 특정 유형의 STL 컨테이너
특정 유형의 컨테이너를 std::string매개 변수로 사용하는 함수를 만들 수있는 방법이 있습니까? void foo(const std::container&lt;std::string&gt; &amp;cont) { for(std::string val: cont) { std::cout &lt;&lt; val &lt;&lt; std::endl; } } 모든 유형의 stl 컨테이너에 대해 입력으로 호출합니까? 위처럼? std::set&lt;std::string&gt; strset; std::vector&lt;std::string&gt; strvec; std::list&lt;std::string&gt; strlist; foo(strset); foo(strvec); foo(strlist);


2
C ++ 20의 지정된 이니셜 라이저
지정된 초기화 프로그램 인 C ++ 20 기능 중 하나에 대한 질문이 있습니다 (이 기능에 대한 자세한 정보는 here ). #include &lt;iostream&gt; constexpr unsigned DEFAULT_SALARY {10000}; struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : Person { unsigned salary{DEFAULT_SALARY}; }; int main() { std::cout &lt;&lt; std::boolalpha …

2
std :: unordered_map operator []가 비 기존 키에 대해 0으로 초기화합니까?
cppreference.com에 따르면 std::map::operator[]존재하지 않는 값에 대해서는 초기화가 수행되지 않습니다. 그러나 동일한 사이트에는 이에 대한 std::unordered_map::operator[]예제가있는 경우를 제외하고에 대한 0 초기화를 언급하지 않습니다 . 물론 이것은 표준이 아닌 참조 사이트 일뿐입니다. 아래 코드가 정상입니까? #include &lt;unordered_map&gt; int main() { std::unordered_map&lt;int, int&gt; map; return map[42]; // is this guaranteed to return 0? …

3
컴파일러가 로컬 휘발성을 일정하게 접을 수 있습니까?
이 간단한 코드를 고려하십시오. void g(); void foo() { volatile bool x = false; if (x) g(); } https://godbolt.org/z/I2kBY7 에 대한 잠재적 호출을 최적화 gcc하거나 clang최적화 하지는 않습니다 g. 이것은 내 이해에 맞습니다 : 추상 기계는 volatile변수가 언제든지 (하드웨어 매핑 등으로 인해) 변경 될 수 있다고 가정해야 하므로 false초기화에 if검사 …

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