«stl» 태그된 질문

STL (Standard Template Library)은 일반 컨테이너, 반복자, 알고리즘 및 함수 객체로 구성된 C ++ 라이브러리입니다. C ++가 표준화되었을 때, STL의 많은 부분이 표준 라이브러리에 채택되었고, 표준 라이브러리의 이러한 부분은 때때로 총칭하여 "STL"로 잘못 언급되기도합니다.

5
객체에 우선 순위 대기열 STL을 사용하는 방법은 무엇입니까?
class Person { public: int age; }; Person 클래스의 개체를 우선 순위 대기열에 저장하고 싶습니다. priority_queue< Person, vector<Person>, ??? > 비교를 위해 클래스를 정의해야한다고 생각하지만 확실하지 않습니다. 또한 우리가 쓸 때 priority_queue< int, vector<int>, greater<int> > 더 큰 것은 어떻게 작동합니까?
80 c++  stl 

7
C ++ 예외 : std :: string 던지기
내 C ++ 메서드가 이상하고 복구 할 수없는 경우 예외를 throw하고 싶습니다. std::string포인터 를 던져도 괜찮 습니까? 제가 기대했던 작업은 다음과 같습니다. void Foo::Bar() { if(!QueryPerformanceTimer(&m_baz)) { throw new std::string("it's the end of the world!"); } } void Foo::Caller() { try { this->Bar(); // should throw } catch(std::string *caught) { …
80 c++  exception  stl 

15
C ++에 프로덕션 준비 잠금이없는 큐 또는 해시 구현이 있습니까?
닫은. 이 질문은 Stack Overflow 지침을 충족하지 않습니다 . 현재 답변을 받고 있지 않습니다. 이 질문을 개선하고 싶으십니까? Stack Overflow의 주제에 맞게 질문을 업데이트하세요 . 휴일 2 년 전 . 이 질문 개선 나는 C ++에서 잠금없는 큐를 위해 꽤 많이 인터넷 검색을 해왔다. 몇 가지 코드와 시험판을 찾았지만 컴파일 …
80 c++  stl  lock-free 

10
ac 배열과 같이 'const std :: vector <T>'를 초기화하는 방법
고정 된 (그리고 적은) 수의 값에 const std::vector&lt;const T&gt;좋아요 를 만들고 초기화하는 우아한 방법이 const T a[] = { ... }있습니까? 를 예상하는 함수를 자주 호출해야 vector&lt;T&gt;하지만이 값은 제 경우에는 절대 변경되지 않습니다. 원칙적으로 나는 다음과 같은 것을 생각했다. namespace { const std::vector&lt;const T&gt; v(??); } v는이 컴파일 단위 외부에서 …
79 c++  stl 

7
위임이 아닌 STL 컨테이너에서 구현을 상속해도 괜찮습니까?
도메인 별 개체의 컨테이너를 모델링하기 위해 std :: vector를 적용하는 클래스가 있습니다. 대부분의 std :: vector API를 사용자에게 노출하여 컨테이너에서 익숙한 메서드 (size, clear, at 등) 및 표준 알고리즘을 사용할 수 있도록합니다. 이것은 내 디자인에서 반복되는 패턴 인 것 같습니다. class MyContainer : public std::vector&lt;MyObject&gt; { public: // Redeclare all …
79 c++  stl 

4
일반 유형으로 특정 유형의 STL 컨테이너
특정 유형의 컨테이너를 std::string매개 변수로 사용하는 함수를 만들 수있는 방법이 있습니까? void foo(const std::container&lt;std::string&gt; &amp;cont) { for(std::string val: cont) { std::cout &lt;&lt; val &lt;&lt; std::endl; } } 모든 유형의 stl 컨테이너에 대해 입력으로 호출합니까? 위처럼? std::set&lt;std::string&gt; strset; std::vector&lt;std::string&gt; strvec; std::list&lt;std::string&gt; strlist; foo(strset); foo(strvec); foo(strlist);

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

3
가장 저렴한 인수 유형을 결정하는 컴파일 시간 방법
다음과 같은 템플릿이 있습니다 template &lt;typename T&gt; class Foo { public: Foo(const T&amp; t) : _t(t) {} private: const T _t; }; 인수 유형이 부울 또는 문자와 같이 사소한 경우 const 참조를 사용하지 않는 정통한 템플릿 메타 프로그래밍 방법이 있습니까? 처럼: Foo(stl::smarter_argument&lt;T&gt;::type t) : _t(t) {}
15 c++  stl 

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

1
`string.assign (string.data (), 5)`는 잘 정의되어 있습니까 아니면 UB입니까?
동료가 이것을 작성하고 싶었습니다. std::string_view strip_whitespace(std::string_view sv); std::string line = "hello "; line = strip_whitespace(line); 나는 돌아 오는 string_view것이 나에게 선험적으로 불편 하다고 말했고 , 더 나아가 여기의 앨리어싱은 UB처럼 보였다. 나는 line = strip_whitespace(line)이 경우에 해당 한다고 확신 할 수있다 line = std::string_view(line.data(), 5). 나는 전화 할 생각 string::operator=(const …

3
병렬 실행 정책으로 std :: transform을 대신 사용할 수 있습니까?
I 착각하지 않다, 내가 수 std::transform수행 장소에서 입출력 반복자 같은 범위를 사용하여. std::vector객체 가 있다고 가정 vec하면 쓸 것입니다. std::transform(vec.cbegin(),vec.cend(),vec.begin(),unary_op) 적절한 단항 연산 사용 unary_op. C ++ 17 표준을 사용하여 std::execution::par첫 번째 인수로 in 을 붙여서 변환을 병렬로 실행하고 싶습니다 . 이렇게하면의 cppreference 기사에서std::transform 함수가 과부하 (1)에서 (2)로 이동합니다 . …

1
GCC에서 unorder_map :: insert KeyEqual 예외 중 메모리 누수가 발생합니다.
GCC 7.3.1을 사용하고 있지만 버전 9.2.0이라고 생각되는 coliru에서도 테스트되었습니다. 다음을 사용하여 빌드하십시오. g++ -fsanitize=address -fno-omit-frame-pointer rai.cpp 여기 있습니다 rai.cpp: #include &lt;iostream&gt; #include &lt;unordered_map&gt; int main() { try { struct MyComp { bool operator()(const std::string&amp;, const std::string&amp;) const { throw std::runtime_error("Nonono"); } }; std::unordered_map&lt;std::string, std::string, std::hash&lt;std::string&gt;, MyComp&gt; mymap; mymap.insert(std::make_pair("Hello", "There")); mymap.insert(std::make_pair("Hello", …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.