728x90
반응형

프로그래밍 언어/C++ 82

C ++ 11은 표준화 된 메모리 모델의 도입이 미치는 영향

질문 : C ++ 11은 표준화 된 메모리 모델을 도입했습니다. 무슨 뜻이에요? 그리고 그것이 C ++ 프로그래밍에 어떤 영향을 미칠까요? C ++ 11은 표준화 된 메모리 모델을 도입했지만 정확히 무엇을 의미합니까? 그리고 그것이 C ++ 프로그래밍에 어떤 영향을 미칠까요? 이 기사 ( Herb Sutter 를 인용 한 Gavin Clarke의 )는 다음과 같이 말합니다. 메모리 모델은 C ++ 코드가 이제 컴파일러를 만든 사람과 실행중인 플랫폼에 관계없이 호출 할 표준화 된 라이브러리를 가지고 있음을 의미합니다. 서로 다른 스레드가 프로세서의 메모리와 통신하는 방식을 제어하는 표준 방법이 있습니다. Sutter 는 "표준에있는 여러 코어로 [코드]를 분할하는 것에 대해 이야기 할 때 메모리 모델에 대..

C ++ 11에서 람다식이란?

질문 : C ++ 11에서 람다식이 란 무엇입니까? C ++ 11에서 람다식이 란 무엇입니까? 언제 사용합니까? 도입 전에는 불가능했던 문제의 종류는 무엇입니까? 몇 가지 예와 사용 사례가 유용 할 것입니다. 답변 std::for_each 및 std::transform 과 같은 유용한 일반 함수가 포함되어있어 매우 편리합니다. 안타깝게도 특히 적용하려는 펑터 가 특정 기능에 고유 한 경우 사용하기가 매우 번거로울 수 있습니다. #include #include namespace { struct f { void operator()(int) { // do something } }; } void func(std::vector& v) { f f; std::for_each(v.begin(), v.end(), f);..

C ++ 17의 새로운 기능

질문 : C ++ 17의 새로운 기능은 무엇입니까? C ++ 17은 이제 기능이 완전하므로 큰 변화가 없을 것입니다. C ++ 17에 대한 수백 개의 제안이 제출되었습니다. C ++ 17에서 C ++에 추가 된 기능은 무엇입니까? "C ++ 1z"를 지원하는 C ++ 컴파일러를 사용할 때 컴파일러가 C ++ 17로 업데이트 할 때 사용할 수있는 기능은 무엇입니까? 답변 언어 기능: 템플릿 및 일반 코드: 클래스 템플릿에 대한 템플릿 인수 추론 함수가 템플릿 인수를 추론하는 방식과 마찬가지로 이제 생성자는 클래스의 템플릿 인수를 추론 할 수 있습니다. http://wg21.link/p0433r2 http://wg21.link/p0620r0 http://wg21.link/p0512r0 template 모든 ..

메서드가 Moq에서 호출되지 않았는지 확인하는 방법

질문 : 메서드가 Moq에서 호출되지 않았는지 확인하는 방법은 무엇입니까? 메소드가 Moq 에서 호출되지 않았는지 어떻게 확인합니까? AssertWasNotCalled와 같은 것이 있습니까? 업데이트 : 버전 3.0부터 새 구문을 사용할 수 있습니다. mock.Verify(foo => foo.Execute("ping"), Times.Never()); 답변 업데이트 : 버전 3부터 위 질문에 대한 업데이트 또는 아래 Dann의 답변을 확인하십시오. 또는 모의를 엄격하게 만들어 기대하지 않는 메서드를 호출하면 실패합니다. new Mock(MockBehavior.Strict) 또는 mock을 느슨하게하려면 .Throws (Exception) var m = new Mock(MockBehavior.Loose); ..

gcc의 C / C ++ 소스에서 assembler output 얻는 방법

질문 : gcc의 C / C ++ 소스에서 어셈블러 출력을 어떻게 얻습니까? 어떻게해야합니까? 무언가가 어떻게 컴파일되는지 분석하고 싶다면 내 보낸 어셈블리 코드를 어떻게 얻을 수 있습니까? 답변 gcc (또는 g ++)에 -S 옵션을 사용합니다. gcc -S helloworld.c 이것은 helloworld.c를 통해 전 처리기 (cpp)를 실행하고 초기 컴파일을 수행 한 다음 어셈블러가 실행되기 전에 중지됩니다. helloworld.s 파일을 출력합니다. -o 옵션을 사용하여 출력 파일을 설정할 수 있습니다. gcc -S -o my_asm_output.s helloworld.c 물론 이것은 원본 소스가있는 경우에만 작동합니다. 결과 객체 파일 만있는 경우 대안 --disassemble 옵션 (또는 축..

C ++ 표준 int, long 유형의 크기 기준

질문 : C ++ 표준은 int, long 유형의 크기를 무엇으로 지정합니까? 기본 C ++ 유형의 크기에 대한 자세한 정보를 찾고 있습니다. 아키텍처 (16 비트, 32 비트, 64 비트)와 컴파일러에 따라 다르다는 것을 알고 있습니다. 하지만 C ++에 대한 표준이 있습니까? 32 비트 아키텍처에서 Visual Studio 2008을 사용하고 있습니다. 내가 얻는 것은 다음과 같습니다. char : 1 byte short : 2 bytes int : 4 bytes long : 4 bytes float : 4 bytes double: 8 bytes char , short , int , long , double , float (및 내가 생각하지 않은 다른 유형)의 크기를 나타내는 신뢰할 수있는 정보를 찾..

C ++ 컴파일이 오래 걸리는 이유

질문 : C ++ 컴파일이 왜 그렇게 오래 걸리나요? C ++ 파일을 컴파일하는 것은 C # 및 Java와 비교할 때 매우 오래 걸립니다. 일반적인 크기의 Python 스크립트를 실행하는 것보다 C ++ 파일을 컴파일하는 데 훨씬 더 오래 걸립니다. 현재 VC ++를 사용하고 있지만 모든 컴파일러와 동일합니다. 왜 이런거야? 내가 생각할 수있는 두 가지 이유는 헤더 파일을로드하고 전처리기를 실행하는 것이었지만 그것이 왜 그렇게 오래 걸리는지 설명 할 수없는 것 같습니다. 답변 몇 가지 이유 헤더 파일 모든 단일 컴파일 단위에는 수백 또는 수천 개의 헤더가 (1)로드되고 (2) 컴파일되어야합니다. 전처리 기가 헤더 컴파일 결과가 모든 컴파일 단위마다 다를 수 있도록 보장하기 때문에 일반적으로 모든 컴파일 ..

Collatz 추측을 테스트하기위한 C ++ 코드가 손으로 작성한 어셈블리보다 빠르게 실행되는 이유

질문 : Collatz 추측을 테스트하기위한 C ++ 코드가 손으로 작성한 어셈블리보다 빠르게 실행되는 이유는 무엇입니까? 이 두 가지 솔루션을 Project Euler Q14 , 어셈블리 및 C ++로 작성했습니다. 그들은 Collatz 추측 을 테스트하기 위해 동일한 무차별 대입 접근 방식을 구현합니다. 조립 솔루션은 다음과 같이 조립되었습니다. nasm -felf64 p14.asm && gcc p14.o -o p14 C ++는 다음과 같이 컴파일되었습니다. g++ p14.cpp -o p14 어셈블리, p14.asm : section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rd..

C ++ 프로그래머가 'new'사용을 최소화해야하는 이유

질문 : C ++ 프로그래머가 'new'사용을 최소화해야하는 이유는 무엇입니까? std :: list 을 사용할 때 std :: string 으로 스택 오버플로 질문 메모리 누수를 우연히 발견 했으며 주석 중 하나는 다음 과 같이 말합니다. 사용을 중지 new 너무 많이. 당신이 한 곳에서 새로운 것을 사용한 이유를 볼 수 없습니다. C ++ 에서 값별로 객체를 생성 할 수 있으며 이는 언어 사용의 큰 장점 중 하나입니다. 힙에 모든 것을 할당 할 필요는 없습니다. 자바 프로그래머처럼 생각하지 마세요. 그게 무슨 뜻인지 잘 모르겠습니다. 왜 객체는 가능한 한 자주 C ++의 값으로 생성되어야하며 내부적으로 어떤 차이가 있습니까? 내가 답을 잘못 해석 했습니까? 답변 널리 사용되는 메모리 할당 기술에는 자..

확실한 C ++ 의 가이드 및 목록

질문 : 확실한 C ++ 책 가이드 및 목록 이 질문은 매년 출판되는 수십 권의 나쁜 C ++ 책 중에서 몇 가지 진주를 수집하려고합니다. 인터넷에서 찾아 볼 수있는 자습서에서 이동 중에 자주 선택되는 다른 프로그래밍 언어와 달리 잘 작성된 C ++ 책을 공부하지 않고 C ++를 빠르게 선택할 수있는 사람은 거의 없습니다. 이것을하기에는 너무 크고 복잡합니다. 사실, 너무 크고 복잡해서 아주 나쁜 C ++ 책 이 많이 있습니다. 그리고 우리는 나쁜 스타일에 대해 말하는 것이 아니라 눈에 띄게 명백한 사실적 오류를 자랑하고 엄청나게 나쁜 프로그래밍 스타일을 홍보하는 것과 같은 것입니다. 허용 된 답변을 편집하여 양질의 책 과 대략적인 기술 수준 을 제공하십시오. 가급적 C ++ 채팅방 에서 추가 내용을 논..

C 및 C ++에서 char를 int로 변환

질문 : C 및 C ++에서 char를 int로 변환 C 및 C ++에서 char 를 int 로 어떻게 변환합니까? 답변 수행하려는 작업에 따라 다릅니다. 값을 ASCII 코드로 읽으려면 다음과 같이 작성할 수 있습니다. char a = 'a'; int ia = (int)a; /* note that the int cast is not necessary -- int ia = a would suffice */ 문자 '0' -> 0 , '1' -> 1 등을 변환하려면 다음과 같이 쓸 수 있습니다. char a = '4'; int ia = a - '0'; /* check here if ia is bounded by 0 and 9 */ 설명 : a - '0' 은 ((int)a) - ((int)'0') 와 동일하며..

C ++에서 PI 상수를 사용하는 방법

질문 : C ++에서 PI 상수를 사용하는 방법 일부 C ++ 프로그램에서 PI 상수 및 삼각 함수를 사용하고 싶습니다. include 사용하여 삼각 함수를 얻습니다. 그러나이 헤더 파일에는 PI에 대한 정의가없는 것 같습니다. PI를 수동으로 정의하지 않고 어떻게 얻을 수 있습니까? 답변 일부 (특히 오래된) 플랫폼 (아래 설명 참조)에서는 다음을 수행해야 할 수 있습니다. #define _USE_MATH_DEFINES 그런 다음 필요한 헤더 파일을 포함합니다. #include pi 값은 다음을 통해 액세스 할 수 있습니다. M_PI 내 math.h (2014)에서는 다음과 같이 정의됩니다. # define M_PI 3.14159265358979323846 /* pi */ 그러나 더 많은 것을 위해 당..

C ++에서 포인터 변수와 참조 변수의 차이점

질문 : C ++에서 포인터 변수와 참조 변수의 차이점은 무엇입니까? 참조가 구문 적 설탕이라는 것을 알고 있으므로 코드를 읽고 쓰기가 더 쉽습니다. 그러나 포인터 변수와 참조 변수의 차이점은 무엇입니까? 답변 포인터를 다시 할당 할 수 있습니다. int x = 5; int y = 6; int *p; p = &x; p = &y; *p = 10; assert(x == 5); assert(y == 10); 참조는 다시 바인딩 될 수 없으며 초기화시 바인딩되어야합니다. int x = 5; int y = 6; int &q; // error int &r = x; 포인터 변수는 고유 한 ID를 가지고 있습니다. 단항 & sizeof 연산자로 측정 할 수있는 특정 공간입니다. 참조에서 이러한 연산자를 사용하면 참조가..

문자열 구분 기호 (표준 C ++)를 사용하여 C ++에서 문자열 구문 분석

질문 : 문자열 구분 기호 (표준 C ++)를 사용하여 C ++에서 문자열 구문 분석 (분할) 다음을 사용하여 C ++에서 문자열을 구문 분석하고 있습니다. using namespace std; string parsed,input="text to be parsed"; stringstream input_stringstream(input); if (getline(input_stringstream,parsed,' ')) { // do some processing. } 단일 문자 구분 기호로 구문 분석하는 것이 좋습니다. 그러나 문자열을 구분 기호로 사용하려면 어떻게해야합니까? 예 : 분할하고 싶습니다. scott>=tiger >= 를 구분 기호로 사용하여 scott과 tiger를 얻을 수 있습니다. 답변 st..

"STL"과 "C ++ 표준 라이브러리"의 차이점

질문 : "STL"과 "C ++ 표준 라이브러리"의 차이점은 무엇입니까? 누군가가 가져온 이 기사를 주장 (내가 지나친 의역있어)가 STL의 용어는 SGI의 STL에서 촬영 한 부분 대신 전체 C ++ 표준 라이브러리를 참조 오용 나의 관심. (...) STL (SGI에서 디자인 된)을 사용하는 사람이 거의 없다는 사실에도 불구하고 "STL"을 의미합니다. C ++ 표준 라이브러리의 일부는 STL의 일부를 기반으로하고 있으며, 많은 사람들 (여러 작성자 및 악명 높은 오류가있는 cplusplus.com 포함)이 여전히 "STL"이라고 부르는 부분입니다. 그러나 이것은 정확하지 않습니다. 실제로 C ++ 표준은 "STL"을 언급하지 않으며 둘 사이에 내용 차이가 있습니다. (...) "STL"은 SGI S..

C #으로 JSON을 구문 분석을 수행하는 방법

질문 : C #으로 JSON을 어떻게 구문 분석 할 수 있습니까? 다음 코드가 있습니다. var user = (Dictionary)serializer.DeserializeObject(responsecontent); responsecontent 의 입력은 JSON이지만 객체로 제대로 구문 분석되지 않았습니다. 올바르게 역 직렬화하려면 어떻게해야합니까? 답변 Json.NET (Newtonsoft.Json NuGet 패키지)을 사용하지 않는다고 가정합니다. 이 경우 시도해야합니다. 다음과 같은 기능이 있습니다. 아래 예를 보십시오. 이 예제에서는 JsonConvert 클래스를 사용하여 객체를 JSON으로 또는 JSON으로 변환합니다. 이를 위해 두 가지 정적 메서드가 있습니다. SerializeObject(O..

C ++ 11에서 'typedef'와 'using'의 차이점

질문 : C ++ 11에서 'typedef'와 'using'의 차이점은 무엇입니까? typedef 와 같은 형식 별칭을 작성 using 을 사용할 수 있다는 것을 알고 있습니다. typedef int MyInt; 내가 이해하는 바에 따르면 다음과 같습니다. using MyInt = int; 그리고 그 새로운 구문은 "템플릿 typedef"를 표현하는 방법을 가지려는 노력에서 나왔습니다. template using MyType = AnotherType; 그러나 처음 두 개의 템플릿이 아닌 예제의 경우 표준에 다른 미묘한 차이가 있습니까? 예를 들어 typedef 는 "약한"방식으로 앨리어싱을 수행합니다. 즉, 새 유형을 생성하지 않고 새 이름 만 ..

C ++ functor와 그 용도

질문 : C ++ functor와 그 용도는 무엇입니까? C ++의 functor에 대해 계속 많이 듣습니다. 누군가 나에게 그들이 무엇인지, 어떤 경우에 유용 할 것인지에 대한 개요를 줄 수 있습니까? 답변 functor는 operator ()를 정의하는 클래스 일뿐입니다. 이를 통해 함수와 "같이 보이는"객체를 만들 수 있습니다. // this is a functor struct add_x { add_x(int val) : x(val) {} // Constructor int operator()(int y) const { return x + y; } private: int x; }; // Now you can use it like this: add_x add42(42); // create an inst..

"yield"키워드의 기능

질문 : "yield"키워드의 기능은 무엇입니까? yield 키워드의 사용은 무엇이며 어떤 역할을합니까? 예를 들어,이 코드 1 을 이해하려고합니다. def _get_child_candidates(self, distance, min_dist, max_dist): if self._leftchild and distance - max_dist = self._median: yield self._rightchild 그리고 이것은 호출자입니다. result, candidates = [], [self] while candidates: node = candidates.po..

C ++ 식별자에서 "_"을 사용하는 규칙

질문 : C ++ 식별자에서 "_" 을 사용하는 규칙은 무엇입니까? C ++에서는 멤버 변수에 어떤 종류의 접두사를 사용하여 멤버 변수의 이름을 지정하여 로컬 변수 나 매개 변수가 아니라 멤버 변수라는 사실을 나타내는 것이 일반적입니다. MFC 배경에서왔다면 아마도 m_foo 사용할 것입니다. 나는 또한 가끔 myFoo C # (또는 아마도 .NET)은 _foo 밑줄 만 사용하는 것이 좋습니다. 이것이 C ++ 표준에서 허용됩니까? 답변 규칙 (C ++ 11에서는 변경되지 않음) : 구현 매크로 사용을 포함하여 모든 범위에서 예약됩니다. 밑줄로 시작하고 바로 뒤에 대문자가 오는 식별자 인접한 밑줄 ("_")을 포함하는 식별자 글로벌 네임 스페이스에 예약 됨 :. 밑줄로 시작하는 식별자 또한 std 네임 ..

Visual Studio C / C ++ 콘솔 애플리케이션에서 콘솔 창이 닫히지 않도록 방지

질문 : Visual Studio C / C ++ 콘솔 애플리케이션에서 콘솔 창이 닫히지 않도록 방지 의심 할 여지없이 대답이 눈부시게 분명하기 때문에 이것은 아마도 당황스러운 질문 일 것입니다. 저는 Visual Studio를 수년간 사용해 왔지만 '콘솔 애플리케이션'개발을 한 것은 이번이 처음입니다. 응용 프로그램을 실행하면 콘솔 창이 나타나고 프로그램 출력이 나타난 다음 응용 프로그램이 종료되면 창이 닫힙니다. 출력을 확인할 때까지 열어 두거나 창을 닫은 후 결과를 볼 수있는 방법이 있습니까? 답변 Visual Studio 2017 (15.9.4)부터 옵션이 있습니다. Tools->Options->Debugging->Automatically close the console Visual Studio ..

C ++에서 가상 기본 클래스 란?

질문 : C ++에서 가상 기본 클래스 란 무엇입니까? "가상 기본 클래스 "가 무엇이며 그 의미를 알고 싶습니다. 예를 하나 보여 드리겠습니다. class Foo { public: void DoSomething() { /* ... */ } }; class Bar : public virtual Foo { public: void DoSpecific() { /* ... */ } }; 답변 가상 상속에 사용되는 가상 기본 클래스는 다중 상속을 사용할 때 지정된 클래스의 여러 "인스턴스"가 상속 계층에 나타나는 것을 방지하는 방법입니다. 다음 시나리오를 고려하십시오. class A { public: void Foo() {} }; class B : public A {}; class C : public A {}; ..

C #에서 돈의 단위로 사용하기에 가장 좋은 데이터 유형

질문 : C #에서 돈으로 사용하기에 가장 좋은 데이터 유형은 무엇입니까? C #에서 돈으로 사용하기에 가장 좋은 데이터 유형은 무엇입니까? 답변 10진수 로 다음과 같이 설명됩니다. decimal 키워드는 128 비트 데이터 유형을 나타냅니다. 부동 소수점 유형에 비해 decimal 유형은 정밀도가 더 높고 범위가 더 작으므로 재무 및 금전적 계산에 적합합니다. 다음과 같이 소수점을 사용할 수 있습니다. decimal myMoney = 300.5m; 출처 : https://stackoverflow.com/questions/693372/what-is-the-best-data-type-to-use-for-money-in-c

728x90
반응형