728x90
반응형

c++ 71

문자열 구분 기호 (표준 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 ++ 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 # 개발자로서 저는 생성자를 통해 실행하는 데 익숙합니다. class Test { public Test() { DoSomething(); } public Test(int count) : this() { DoSomethingWithCount(count); } public Test(int count, string name) : this(count) { DoSomethingWithName(name); } } C ++에서이 작업을 수행하는 방법이 있습니까? 클래스 이름을 호출하고 'this'키워드를 사용해 보았지만 둘 다 실패했습니다. 답변 C ++ 11 : 예! C ++ 11 이상에는 이와 동일한 기능 ( 위임 생성자 라..

이 프로그램이 세 개의 C ++ 컴파일러에서 잘못 거부 된 이유

질문 : 이 프로그램이 세 개의 C ++ 컴파일러에서 잘못 거부 된 이유는 무엇입니까? 내가 작성한 C ++ 프로그램을 컴파일하는 데 어려움이 있습니다. 이 프로그램은 매우 간단하며 내가 아는 한 C ++ 표준에 명시된 모든 규칙을 준수합니다. 확실히하기 위해 ISO / IEC 14882 : 2003 전체를 두 번 읽었습니다. 프로그램은 다음과 같습니다. 다음은 Visual C ++ 2010으로이 프로그램을 컴파일하려고 할 때받은 출력입니다. c:\dev>cl /nologo helloworld.png cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed helloworld.pn..

32 비트 루프 카운터를 64 비트로 대체하면 Intel CPU에서 _mm_popcnt_u64의 성능 편차가 발생합니다.

질문 : 32 비트 루프 카운터를 64 비트로 대체하면 Intel CPU에서 _mm_popcnt_u64의 성능 편차가 발생합니다. 대규모 데이터 배열 popcount 하는 가장 빠른 방법을 찾고있었습니다. 매우 이상한 효과가 발생했습니다. 루프 변수를 unsigned 에서 uint64_t 로 변경하면 내 PC에서 성능이 50 % 저하되었습니다. #include #include #include int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr

POSIX를 사용하여 C ++에서 명령을 실행하고 명령의 출력을 얻는 방법

질문 : POSIX를 사용하여 C ++에서 명령을 실행하고 명령의 출력을 얻으려면 어떻게해야합니까? C ++ 프로그램 내에서 실행될 때 명령의 출력을 얻는 방법을 찾고 있습니다. system() 함수를 사용해 보았지만 명령 만 실행합니다. 내가 찾고있는 것의 예는 다음과 같습니다. std::string result = system("./some_command"); 임의의 명령을 실행하고 출력을 얻어야합니다. boost.org를 살펴 보았지만 필요한 것을 얻을 수있는 것을 찾지 못했습니다. 답변 676 #include #include #include #include #include #include std::string exec(const char* cmd) { std::array buffer; std::s..

new를 사용하여 C ++에서 2차원 배열을 선언하는 방법

질문 : new를 사용하여 C ++에서 2D 배열을 어떻게 선언합니까? new를 사용하여 2D 배열을 어떻게 선언합니까? "일반"배열의 경우 다음과 같이합니다. int* ary = new int[Size] 그러나 int** ary = new int[sizeY][sizeX] a) 작동 / 컴파일하지 않고 b) 다음을 수행하지 않습니다. int ary[sizeY][sizeX] 그렇습니다. 답변 행 길이가 컴파일 시간 상수 인 경우 C ++ 11은 auto arr2d = new int [nrows][CONSTANT]; 이 답변을 참조하십시오. C ++의 확장으로 가변 길이 배열을 허용하는 gcc와 같은 컴파일러는 여기에 표시된대로 new 를 사용하여 C99에서 허용하는 것과 같은 완전한 런타임 가변 배열 차원..

JAVA의 날짜 연산에서 이상한 결과가 나오는 이유

질문 : 이 두 번을 빼면 (1927 년) 이상한 결과가 나오는 이유는 무엇입니까? 다음 프로그램을 실행하면 1 초 간격으로 시간을 참조하는 두 개의 날짜 문자열을 구문 분석하고 비교합니다. public static void main(String[] args) throws ParseException { SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str3 = "1927-12-31 23:54:07"; String str4 = "1927-12-31 23:54:08"; Date sDt3 = sf.parse(str3); Date sDt4 = sf.parse(str4); long ld3 = sDt3.getTime() /1000..

__name__ == “__main__”: 하면 어떻게 될까?

질문 : __name__ ==“__main__”:하면 어떻게됩니까? 다음 코드가 주어지면 if __name__ == "__main__": do? # Threading example import time, thread def myfunction(string, sleeptime, lock, *args): while True: lock.acquire() time.sleep(sleeptime) lock.release() time.sleep(sleeptime) if __name__ == "__main__": lock = thread.allocate_lock() thread.start_new_thread(myfunction, ("Thread #: 1", 2, lock)) thread.start_new_thread(..

정렬되지 않은 배열을 처리하는 것보다 정렬 된 배열을 처리하는 것이 더 빠른 이유

질문 : 정렬되지 않은 배열을 처리하는 것보다 정렬 된 배열을 처리하는 것이 더 빠른 이유는 무엇입니까? 다음은 매우 특이한 동작을 보여주는 C ++ 코드입니다. 이상한 이유로 데이터를 기적적으로 정렬하면 코드가 거의 6 배 빨라집니다. #include #include #include int main() { // Generate data const unsigned arraySize = 32768; int data[arraySize]; for (unsigned c = 0; c < arraySize; ++c) data[c] = std::rand() % 256; // !!! With this, the next loop runs faster. std::sort(data, data + arraySize); // ..

C ++ 코드 파일 확장자 .cc와 .cpp의 차이점

질문 : C ++ 코드 파일 확장자? .cc와 .cpp의 차이점은 무엇입니까? .cc 및 .cpp 파일로 저장된 C ++ 코드를 보았습니다. 둘 사이에 차이점이 있습니까? Google 스타일 가이드 .cc 를 제안하는 것처럼 보이지만 설명을 제공하지 않습니다. 주로 Linux 시스템의 프로그램에 관심이 있습니다. 답변 결국 C ++ 컴파일러는 두 형식의 파일을 다룰 수 있기 때문에 문제가되지 않습니다. 팀 내에서 진짜 문제라면 동전을 던지고 실제 작업으로 넘어갑니다. 출처 : https://stackoverflow.com/questions/1545080/c-code-file-extension-what-is-the-difference-between-cc-and-cpp

C ++에서 구조체와 클래스의 차이점

질문 : C ++에서 구조체와 클래스의 차이점은 무엇입니까? 이 질문은 이미 C # /. Net 컨텍스트에서 요청되었습니다 . 이제 C ++에서 구조체와 클래스의 차이점을 배우고 싶습니다. OO 디자인에서 기술적 인 차이점과 둘 중 하나를 선택하는 이유에 대해 논의하십시오. 분명한 차이점부터 시작하겠습니다. public: 또는 private: 지정하지 않으면 구조체의 멤버는 기본적으로 public입니다. 클래스의 멤버는 기본적으로 비공개입니다. C ++ 사양의 모호한 모서리에서 다른 차이점을 찾을 수 있다고 확신합니다. 답변 클래스와 구조체의 까다로운 두 번째 차이점을 잊었습니다. 표준 (C ++ 98에서 C ++ 11까지의 §11.2.2) : 도출 된 클래스 구조체를 선언하고 개인이 클래스는 클래스를 ..

C ++ 표준은 초기화되지 않은 bool이 프로그램을 충돌시키는 것을 허용할까?

질문 : C ++ 표준은 초기화되지 않은 bool이 프로그램을 충돌시키는 것을 허용합니까? C ++의 "정의되지 않은 동작" 은 컴파일러가 원하는 모든 작업을 수행 할 수 있도록 허용합니다. 그러나 코드가 충분히 안전하다고 생각했기 때문에 놀랐던 충돌이 발생했습니다. 이 경우 실제 문제는 특정 컴파일러를 사용하는 특정 플랫폼에서만 발생했으며 최적화가 활성화 된 경우에만 발생했습니다. 문제를 재현하고 최대한 단순화하기 위해 여러 가지를 시도했습니다. 다음은 Bool 매개 변수를 취하고 문자열 true 또는 false 를 기존 대상 버퍼에 Serialize 라는 함수의 추출입니다. 이 함수가 코드 검토에 포함되어 있습니까? 실제로 bool 매개 변수가 초기화되지 않은 값인 경우 충돌이 발생할 수 있다는 것을..

최신 C ++ 11 / C ++ 14 / C ++ 17 및 향후 C ++ 20에서 열거 형 문자열

질문 : 최신 C ++ 11 / C ++ 14 / C ++ 17 및 향후 C ++ 20에서 열거 형 문자열 2008 c C ++ 열거 형을 문자열로 변환하는 간단한 방법이 있습니까? 2008 c C에서 enum 유형의 변수를 문자열로 사용하는 쉬운 방법? 2008 C ++ C ++ 열거 형을 문자열에 쉽게 매핑하는 방법 2008 C ++ 무언가를 C 식별자와 문자열로 만드는가? 2008 C ++ C ++ 열거 형을 문자열로 변환하는 간단한 스크립트가 있습니까? 2009 C ++ C ++에서 열거 형을 플래그로 사용하는 방법은 무엇입니까? 2011 C ++ 열거 형 변수를 문자열로 변환하는 방법은 무엇입니까? 2011 C ++ 열거 형에서 문자열로 C ++ 2011 C ++ 열거 형 변수를 문자열로 변환하..

C ++에서 'struct'와 'typedef struct'의 차이점

질문 : C ++에서 'struct'와 'typedef struct'의 차이점은 무엇입니까? C ++ 에서는 다음과 같은 차이점이 있습니까? struct Foo { ... }; 과: typedef struct { ... } Foo; 답변 C ++에서는 미묘한 차이 만 있습니다. 그것은 차이를 만드는 C로부터의 홀드 오버입니다. C 언어 표준 ( C89 §3.1.2.3 , C99 §6.2.3 및 C11 §6.2.3 )은 태그 식별자 ( struct / union / enum ) 및 일반 식별자 ( typedef )를 포함하여 다양한 범주의 식별자에 대해 별도의 네임 스페이스를 요구합니다. 및 기타 식별자). 방금 말한 경우 : struct Foo { ... }; Foo x; Foo 는 태그 네임 스페이스에..

스크립트 자체 내에서 Bash 스크립트의 소스 디렉토리를 얻는 방법

질문 : 스크립트 자체 내에서 Bash 스크립트의 소스 디렉토리를 얻으려면 어떻게해야합니까? 해당 스크립트 내부 에서 Bash 스크립트가있는 디렉토리의 경로를 어떻게 얻습니까? Bash 스크립트를 다른 응용 프로그램의 실행기로 사용하고 싶습니다. 작업 디렉토리를 Bash 스크립트가있는 디렉토리로 변경하여 다음과 같이 해당 디렉토리의 파일에 대해 작업 할 수 있습니다. $ ./application 답변 #!/bin/bash SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" 어디에서 호출 되든 스크립트의 전체 디렉토리 이름을 제공하는 유용한 한 줄짜리입니다. 스크립트를 찾는 데 사용 된 경로의 마지막 구성 요소가 심볼릭 링..

개발관련/Linux 2021.06.26
728x90
반응형