«c++» 태그된 질문

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

1
왜 GCC가 배열의 초기화를 초기화하여 0이 아닌 요소를 포함하여 모든 것을 먼저 0으로 채우는가?
왜 gcc는 나머지 96 개의 정수 대신에 전체 배열을 0으로 채우는가? 0이 아닌 이니셜 라이저는 모두 배열의 시작 부분에 있습니다. void *sink; void bar() { int a[100]{1,2,3,4}; sink = a; // a escapes the function asm("":::"memory"); // and compiler memory barrier // forces the compiler to materialize a[] in memory …

4
템플릿 유형의 올바른 생성자를 호출하는 방법은 무엇입니까?
다음 코드에서 주석 처리 된 줄을 바로 위의 줄과 동일한 방식으로 작동하게하려면 어떻게해야합니까? 적절한 코드 생성자를 호출하는 일반 코드로 만들고 싶습니다 Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = std::string("abc"); // Class<std::string> …

5
C ++에서 작업 설정 (기존 값 업데이트)
내 코드는 다음과 같습니다. while (it!=s.end()) //here 's' is a set of stl and 'it' is iterator of set { *it=*it-sub; //'sub' is an int value it++; } 반복자가 설정 한 값을 업데이트 할 수 없습니다. set의 모든 요소에서 정수 값 'sub'를 빼고 싶습니다. 실제 문제가있는 곳과 실제 해결책은 무엇입니까? …
21 c++ 


1
함수 인수로서 {}가 왜 모호성을 유발하지 않습니까?
이 코드를 고려하십시오. #include <vector> #include <iostream> enum class A { X, Y }; struct Test { Test(const std::vector<double>&, const std::vector<int>& = {}, A = A::X) { std::cout << "vector overload" << std::endl; } Test(const std::vector<double>&, int, A = A::X) { std::cout << "int overload" << std::endl; } }; int …

3
주어진 std :: variant 유형을 주어진 기준으로 나눕니다.
지정된 변형 유형별 방법 using V = std::variant<bool, char, std::string, int, float, double, std::vector<int>>; 두 가지 변형 유형을 선언하십시오. using V1 = std::variant<bool, char, int, float, double>; using V2 = std::variant<std::string, std::vector<int>>; 여기서 V1모든 연산 종류를 포함 V하고 V2있는 모든 종류의 비 산술 포함 V? V 템플리트 클래스의 매개 변수 …
20 c++  c++17  std-variant 

1
스레드 생성은 자체적으로 메모리 순서 보장을 제공합니까?
나는 대략적으로 이것을하고 싶다 : 초기 실 : 전역 변수에 값을 쓰십시오 (다시 쓰지 않을 것입니다) 이것은 약간 큰 데이터 (배열, 문자열 등) 일 수 있습니다. 단순히 만들 수 없습니다 std::atomic<>. 다른 스레드를 생성 다른 스레드 : 세계 상태를 읽다 일하는 등 이제 인수를 전달할 수 있다는 것을 알고 std::thread있지만이 …


4
std :: back_inserter와 함께 std :: transform을 사용하는 것이 유효합니까?
Cppreference에는 다음에 대한 예제 코드가 있습니다 std::transform. std::vector<std::size_t> ordinals; std::transform(s.begin(), s.end(), std::back_inserter(ordinals), [](unsigned char c) -> std::size_t { return c; }); 그러나 그것은 또한 말합니다 : std::transformunary_op또는의 순서대로 적용 할 수있는 것은 아닙니다 binary_op. 시퀀스에 순서대로 함수를 적용하거나 시퀀스의 요소를 수정하는 함수를 적용하려면을 사용하십시오 std::for_each. 이것은 아마도 병렬 구현을 허용하는 …

2
사소한 물체를 위해`this`에서 새로운 배치를 호출하는 것이 안전합니까?
이 질문이 이미 여러 번 요청되었지만이 특정 사례에 대한 답변을 찾을 수 없습니다. 리소스를 소유하지 않고 빈 소멸자와 기본 생성자가있는 간단한 클래스가 있다고 가정 해 봅시다. 클래스 내 초기화 기능을 가진 소수의 멤버 변수가 있습니다. 그들 중 하나가 아닙니다 const. deInit손으로 메서드를 작성하지 않고 다시 초기화하고 그러한 클래스의 객체를 거부하고 …

3
벡터 캐스트에서 정의되지 않은 동작
이 코드가 정의되지 않은 숫자의 초기화되지 않은 정수를 쓰는 이유는 무엇입니까? #include <iostream> #include <vector> using namespace std; int main() { for (int i : vector<vector<int>>{{77, 777, 7777}}[0]) cout << i << ' '; } 나는 출력이 될 것으로 예상했다 77 777 7777. 이 코드는 정의되어 있지 않습니까?
19 c++ 

2
int numeric-> 포인터 변환 규칙
다음 코드를 고려하십시오. void f(double p) {} void f(double* p) {} int main() { f(1-1); return 0; } MSVC 2017은이를 컴파일하지 않습니다. 1-1동일 0하고 따라서로 변환 될 수 있는 모호한 오버로드 된 호출 이 있음을 나타 double*냅니다. 다른 트릭 같은 0x0, 0L또는 static_cast<int>(0), 중 하나가 작동하지 않습니다. a const int …
19 c++  visual-c++  types 

3
C ++ for 루프 인쇄 잘못된 값의 스레드
C ++에서 멀티 스레딩을 이해하려고 하는데이 문제가 발생했습니다 .for 루프에서 스레드를 시작하면 잘못된 값이 인쇄됩니다. 이것은 코드입니다. #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int i=0; i<n; i++ ){ threads.emplace_back(std::thread([&](){ print_id(i); })); } for(auto& t: …



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