«c++» 태그된 질문

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

6
condition_variable.notify_one ()을 호출하기 전에 잠금을 획득해야합니까?
사용에 대해 약간 혼란 스럽습니다 std::condition_variable. 전화하기 전에 unique_lock에 를 만들어야한다는 것을 이해 합니다. 내가 찾을 수없는 것은 나는 또한 호출하기 전에 고유 잠금을 획득해야하는지 여부입니다 또는 .mutexcondition_variable.wait()notify_one()notify_all() cppreference.com의 예 는 상충됩니다. 예를 들어, notify_one 페이지 는 다음 예를 제공합니다. #include <iostream> #include <condition_variable> #include <thread> #include <chrono> std::condition_variable cv; …


8
webRTC 및 서버 기반 피어 연결을 사용하여 웹캠 및 오디오를 녹음하는 방법
사용자 웹캠과 오디오를 녹음하여 서버의 파일에 저장하고 싶습니다. 이 파일은 다른 사용자에게 제공 될 수 있습니다. 재생에는 문제가 없지만 녹화 할 콘텐츠를 가져 오는 데 문제가 있습니다. 내 이해는 getUserMedia .record()함수가 아직 작성되지 않았다는 것입니다. 지금까지 제안이 작성되었습니다. PeerConnectionAPI를 사용하여 내 서버에서 피어 연결을 만들고 싶습니다. 나는 이것이 약간 해키하다는 …

6
클래스 멤버를 사용한 C ++ 콜백
나는 이것이 여러 번 요청되었다는 것을 알고 있으며, 그 때문에 균열을 파헤 치고 작동하는 간단한 예를 찾기가 어렵습니다. 나는 이것을 가지고 있으며, 간단하고 작동합니다 MyClass... #include <iostream> using std::cout; using std::endl; class MyClass { public: MyClass(); static void Callback(MyClass* instance, int x); private: int private_x; }; class EventHandler { public: …

1
보증 복사 제거는 어떻게 작동합니까?
2016 Oulu ISO C ++ 표준 회의에서 단순화 된 값 범주를 통한 복사 제거 보장 이라는 제안 이 표준위원회에 의해 C ++ 17로 투표되었습니다. 보장 된 복사 제거는 정확히 어떻게 작동합니까? 복사 제거가 이미 허용 된 일부 경우를 포함합니까, 아니면 복사 제거를 보장하기 위해 코드를 변경해야합니까?

7
매개 변수 앞의 const vs 함수 이름 뒤의 const c ++
이런 것의 차이점은 무엇입니까 friend Circle copy(const Circle &); 그리고 이것과 같은 friend Circle copy(Circle&) const; 이 함수가 호출 된 개체를 변경하지 않을 것임을 컴파일러에 알리기 위해 함수가 사용 된 후 const를 알고 있습니다. 다른 함수는 어떻습니까?

2
한 명의 회원과 만 조합을 사용하는 목적은 무엇입니까?
seastar 소스 코드를 읽을 때 tx_side멤버가 하나 뿐인 공용 구조체가 있음을 알았습니다 . 이것은 특정 문제를 다루기위한 해킹입니까? 참고로 tx_side아래 구조를 붙여 넣습니다 . union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque<work_item*> pending_fifo; } a; } _tx;
89 c++  c++14  unions 

6
전역 람다를 사용하지 않는 이유는 무엇입니까?
내부에 캡처되지 않은 람다를 사용하는 함수가 있습니다. void foo() { auto bar = [](int a, int b){ return a + b; } // code using bar(x,y) a bunch of times } 이제 람다에 의해 구현 된 기능이 다른 곳에서 필요해 졌으므로 람다를 foo()전역 / 네임 스페이스 범위로 들어 올릴 것 …
89 c++  lambda 

5
람다의 크기가 1 바이트 인 이유는 무엇입니까?
나는 C ++에서 일부 람다의 메모리로 작업하고 있지만 크기에 약간 의아해합니다. 내 테스트 코드는 다음과 같습니다. #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } 여기에서 실행할 수 있습니다 …
89 c++  c++11  lambda  c++14  sizeof 

3
C ++에서 조건부 typedef를 만드는 방법
나는 다음과 같은 것을 시도하고 있습니다. #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return 0; } 하지만이 오류가 발생합니다. error: missing binary operator before token "(" 조건부 typedef를 올바르게 만들려면 …
89 c++  c++11 


5
'std :;'는 무엇입니까? C ++에서합니까?
최근에 일부 코드를 수정하고 함수 내 한 줄에서 기존 버그를 발견했습니다. std:;string x = y; 이 코드는 여전히 컴파일되고 예상대로 작동합니다. 이 파일이 있기 때문에 문자열 정의 작동 using namespace std;(가) 때문에, std::처음부터 필요했다. 문제는 왜 std:;컴파일이되며 무엇을하고 있는가입니다.
89 c++  std  colon 

2
문자 'A'가 0x41과 비교되는 이유는 무엇입니까?
일부 C ++ 코드를보고 다음 구문을 찾았습니다. if('A' == 0x41) { // ... } else if('A' == 0xc1) { // ... } else { // ... } 다음과 같은 Visual Studio 경고가 표시됩니다. 경고 C4127 조건식이 일정합니다. Visual Studio가 분명히 옳습니다-확실히 'A'는 0x41로 정의됩니다. 세 가지 중 두 가지가 죽은 …
89 c++  string 

4
기본 이동 할당 / 이동 생성자가없는 이유는 무엇입니까?
저는 단순한 프로그래머입니다. 내 클래스 멤버 변수는 대부분 POD 유형과 STL 컨테이너로 구성됩니다. 이 때문에 기본적으로 구현되는 할당 연산자 나 복사 생성자를 거의 작성할 필요가 없습니다. 여기에 std::move움직일 수없는 물체에 사용하면 할당 연산자를 활용하므로 std::move완벽하게 안전합니다. 나는 단순한 프로그래머이기 때문에 컴파일러가 단순히 " this->member1_ = std::move(other.member1_);..." 로 구현할 수 있었기 …

4
memmove가 memcpy보다 빠른 이유는 무엇입니까?
memmove (3)에서 시간의 50 %를 소비하는 응용 프로그램의 성능 핫스팟을 조사하고 있습니다. 응용 프로그램은 수백만 개의 4 바이트 정수를 정렬 된 배열에 삽입하고 삽입 된 값을위한 공간을 만들기 위해 memmove를 사용하여 데이터를 "오른쪽으로"이동합니다. 나의 기대는 메모리 복사가 매우 빠르다는 것이었고, memmove에 너무 많은 시간을 소비하는 것에 놀랐습니다. 그러나 memmove가 겹치는 …
89 c++  c  performance  memory 

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