«c++» 태그된 질문

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

1
C ++ 컴파일러는 extern 변수를 어떻게 찾습니까?
이 프로그램을 g ++ 및 clang ++로 컴파일합니다. 차이점은 다음과 같습니다. g ++는 1을 인쇄하지만 clang ++는 2를 인쇄합니다. g ++ : extern varible은 가장 짧은 범위에서 정의 된 것 같습니다 . clang ++ : extern varible은 가장 짧은 전역 범위에서 정의됩니다. C ++ 사양에 대한 사양이 있습니까? main.cpp #include …

5
매크로를 사용하여 소스 파일 라인을 계산합니까?
C / C ++ 전처리기를 사용하여 소스 파일 내의 행을 매크로 또는 컴파일 가능한 시간 값으로 계산할 수 있습니까? 예 나는 대체 할 수있는 MAGIC1, MAGIC2그리고 MAGIC3사용할 때 다음에, 어떻게 든 값 4를 얻을 MAGIC3? MAGIC1 // can be placed wherever you like before the relevant // lines - either …

2
왜 std :: basic_ios에 public 생성자가 있습니까?
std::basic_ios공개 생성자가 있습니다 : explicit basic_ios (std::basic_streambuf<CharT,Traits>* sb); 클래스가 공용 생성자를 갖는 유일한 이유는 프로그램에서 해당 클래스의 독립형 인스턴스를 사용하는 것입니다. 클래스가 다른 클래스의 클래스에서만 존재하는 경우 (있는 경우 basic_ios) 클래스의 모든 생성자는이어야합니다 protected. 의 생성자 std::ios_base는 모두 보호됩니다. 그러나 어떤 이유로 표준 설계자들은 이것을 하나의 basic_ios공개 생성자로 만들었습니다 . …

5
템플릿 클래스 생성을 위해 for 루프에 const 변수를 사용하는 방법은 무엇입니까?
나는 같은 코드를 가지고있다. template <size_t N> class A { template <size_t N> someFunctions() {}; }; 이제 클래스의 인스턴스를 만들고 for 루프에서 많은 값 집합에 대한 함수를 호출하려고합니다. // in main() int main() { for (int i = 1; i <= 100; i++) { const int N = i; // …

2
함수 객체를 사용하는 C ++ 스레드, 여러 소멸자가 어떻게 호출되지만 생성자는 아닌가?
아래 코드 스 니펫을 찾으십시오. class tFunc{ int x; public: tFunc(){ cout<<"Constructed : "<<this<<endl; x = 1; } ~tFunc(){ cout<<"Destroyed : "<<this<<endl; } void operator()(){ x += 10; cout<<"Thread running at : "<<x<<endl; } int getX(){ return x; } }; int main() { tFunc t; thread t1(t); if(t1.joinable()) { cout<<"Thread …

1
오래된 alloctaor :: construct와 새로운 것과 명시적인 생성자 사이의 차이점은 무엇입니까?
아시다시피 std::allocator<T>::construct이전 버전의 C ++에서는 두 개의 매개 변수 만 사용합니다. 첫 번째는 생성되지 않은 원시 메모리에 대한 포인터이며, 여기서 우리는 유형의 객체를 구성하려고 T하며, 두 번째는 해당 객체를 초기화하기위한 요소 유형의 값입니다. 따라서 복사 생성자가 호출됩니다. struct Foo { Foo(int, int) { cout << "Foo(int, int)" << endl; } …
15 c++  allocator 


2
유효한 C ++ 프로그램을 종료하지 않는 프로그램입니까?
프로그램을 종료해야합니까? 다시 말해서 기술적으로 정의되지 않은 동작을 영원히 실행하는 프로그램입니까? 이것은 빈 루프에 관한 것이 아닙니다. 영원히 "물건"(즉, 관찰 가능한 행동)을하는 프로그램에 대해 이야기합니다. 예를 들면 다음과 같습니다. int main() { while (true) { try { get_input(); // calls IO process(); put_output(); // calls IO, has observable behavior // …

2
C ++ 20 이전에 std :: swap 표시된 constexpr이 아닌 이유는 무엇입니까?
C ++ 20, std::swapa가됩니다 constexpr기능. 나는 표준 라이브러리가 사물을 표시하는 데 실제로 언어보다 뒤떨어져 있음을 알고 constexpr있지만 2017 년 <algorithm>에는 다른 것들과 마찬가지로 거의 constexpr이었습니다. 그러나 std::swap그렇지 않았습니다. 나는 그 표시를 막는 이상한 언어 결함이 있다는 것을 모호하게 기억하지만 세부 사항은 잊어 버립니다. 누군가 간결하고 명확하게 설명 할 수 있습니까? …

2
std :: chrono :: years 스토리지는 실제로 최소 17 비트입니까?
에서 cppreference std::chrono::years (since C++20) duration</*signed integer type of at least 17 bits*/, std::ratio<31556952>> 사용하여 libc++, 그것의 밑줄 저장 보인다 std::chrono::yearsIS short서명 16 비트 . std::chrono::years( 30797 ) // yields 32767/01/01 std::chrono::years( 30797 ) + 365d // yields -32768/01/01 apparently UB cppreference 또는 다른 것에 오타가 있습니까? 예: #include <fmt/format.h> …
14 c++  chrono  c++20  libc++ 

3
비 const에 대한 포인터와 동일한 주소의 const 인수에 대한 포인터를 가진 함수 호출
데이터 배열을 입력하고 포인터를 사용하여 다른 데이터 배열을 출력하는 함수를 작성하고 싶습니다. 두 경우 나는 결과 무엇인지 궁금 src와 dst같은 주소로 지적 내가 컴파일러는 const를 위해 최적화 할 수 있습니다 알고 있기 때문에. 정의되지 않은 동작입니까? (대답이 서로 다를 수 있는지 확실하지 않기 때문에 C와 C ++ 모두에 태그를 지정했으며 …

3
두 범위 내에서 내림차순으로 벡터 정렬
정수 벡터가 있다고 가정 해보십시오. std::vector<int> indices; for (int i=0; i<15; i++) indices.push_back(i); 그런 다음 내림차순으로 정렬합니다. sort(indices.begin(), indices.end(), [](int first, int second) -> bool{return indices[first] > indices[second];}) for (int i=0; i<15; i++) printf("%i\n", indices[i]); 이것은 다음을 생성합니다. 14 13 12 11 10 9 8 7 6 5 4 3 …

1
Clang은 코드를 컴파일하지 않지만 gcc 및 msvc는 코드를 컴파일했습니다.
내 코드 또는 컴파일러 (가능하지 않은)에서 문제가 무엇인지 이해하지 못합니다. 다음과 같은 코드가 있습니다. #include <iostream> #include <type_traits> #include <set> template<typename T, typename = void> struct TestA: std::false_type {}; template<typename T> struct TestA<T, std::void_t<typename T::reverse_iterator>> : std::true_type {}; template<typename T> struct TestA<T, std::void_t<typename T::dummy_iterator>> : std::true_type {}; int main() { …

2
C ++에서 키로서의 벡터는 어떻게 내부적으로 작동합니까?
이 SO 답변에 따르면 벡터에 대한 벡터가있는 STL 맵 벡터를 키로 사용할 수 있습니다. 벡터를 키로 사용할 때 키가 고유해야하기 때문에 실제로 어떻게 작동합니까? 동일한 요소를 가진 다른 벡터를 삽입 할 때 map요소별로 요소를 중복 검사하거나 벡터 이름이 무언가를 지정합니까? 배열의 이름은 기본 주소를 나타냅니다. 따라서 기본 주소는 키로 사용될 …
14 c++  arrays  dictionary  vector  stl 

1
GCC가 std :: vector :: size가이 루프에서 변경되지 않는다고 가정 할 수없는 이유는 무엇입니까?
if (i < input.size() - 1) print(0);이 루프에서 최적화 input.size()되어 모든 반복에서 읽히지 않는 동료에게 주장 했지만 이것이 사실이 아님을 알 수 있습니다! void print(int x) { std::cout << x << std::endl; } void print_list(const std::vector<int>& input) { int i = 0; for (size_t i = 0; i < input.size(); …
14 c++  gcc  assembly 

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