std :: vector는 C ++ 표준 라이브러리의 연속 시퀀스 컨테이너입니다. 저장은 자동으로 처리되므로 요소를 추가하거나 크기를 조정하면 벡터가 더 많은 메모리를 할당 할 수 있습니다. std :: vector 또는 std :: vector 관련 질문에이 태그를 사용하십시오.
나는 벡터를 많이 좋아한다. 그들은 깔끔하고 빠릅니다. 그러나 나는 valarray라는 것이 존재한다는 것을 알고 있습니다. 왜 벡터 대신에 valarray를 사용해야합니까? 나는 valarrays에 약간의 구문 설탕이 있다는 것을 알고 있지만 그 외에는 언제 유용합니까?
쌍으로 구성된 벡터가있는 경우 : std::vector<std::pair<int, int> > vec; 쌍의 두 번째 요소를 기반으로 목록을 정렬하는 쉬운 방법이 있습니까? 나는이 일을하는 작은 함수 객체를 작성할 수 있습니다 알고 있지만, 기존의 부품을 사용하는 방법이 STL을 하고 std::less바로 일을 할 수는? 편집 : 정렬 할 세 번째 인수로 전달하는 별도의 함수 또는 …
함수에서 std :: vector를 반환 할 때 복사되는 데이터의 양과 std :: vector를 free-store (힙에)에 배치하고 대신 포인터를 반환하는 것이 최적화 될 것입니다. std::vector *f() { std::vector *result = new std::vector(); /* Insert elements into result */ return result; } 다음보다 더 효율적입니다. std::vector f() { std::vector result; /* Insert …
std::vectorC ++에서 셔플하는 일반적인 재사용 가능한 방법을 찾고 있습니다. 이것이 내가 현재하는 방법이지만 중간 배열이 필요하고 항목 유형을 알아야하기 때문에 매우 효율적이지 않다고 생각합니다 (이 예에서는 DeckCard). srand(time(NULL)); cards_.clear(); while (temp.size() > 0) { int idx = rand() % temp.size(); DeckCard* card = temp[idx]; cards_.push_back(card); temp.erase(temp.begin() + idx); }
C ++ Vector at / [] operator speed 또는 :: std :: vector :: at () vs operator [] << 와 같은 유사한 질문에서도 논의되는 경계 검사로 인해 at()속도가 느리다는 것을 알고 []있습니다 . 5 ~ 10 배 더 느리게 / 빠르게! . 나는 그 방법이 무엇에 좋은지 이해하지 못합니다 …
크기를 변경하지 않는 몇 개의 큰 배열이있는 다음 Java 코드가 있습니다. 내 컴퓨터에서 1100ms에 실행됩니다. C ++에서 동일한 코드를 구현하고 std::vector. 똑같은 코드를 실행하는 C ++ 구현 시간은 내 컴퓨터에서 8800ms입니다. 내가 뭘 잘못 했나요? 이렇게 느리게 실행 되나요? 기본적으로 코드는 다음을 수행합니다. for (int i = 0; i < …
C ++ 14는 std::dynarray다음을 제공합니다 . std :: dynarray는 구성시 고정되고 객체의 수명 동안 변경되지 않는 크기로 배열을 캡슐화하는 시퀀스 컨테이너입니다. std::dynarray와 동일하게 런타임에 할당되어야합니다 std::vector. 그렇다면 더 동적 인 (또한 크기를 std::dynarray조정할 수있는) 사용할 수 있는 동안 의 이점과 사용법은 std::vector무엇입니까?
어느 시점에서 정수 및 크기 배열에 대한 원시 포인터를 제공하는 외부 라이브러리를 사용하고 있습니다. 이제 std::vector원시 포인터로 값을 액세스하지 않고 해당 값에 액세스하고 수정하는 데 사용하고 싶습니다 . 요점을 설명하는 명확한 예는 다음과 같습니다. size_t size = 0; int * data = get_data_from_library(size); // raw data from library {5,3,2,1,4}, size …
다음 스 니펫을 고려하십시오. #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } 기본 스택 크기는 일반적으로 20MB보다 작기 때문에 대부분의 플랫폼에서 충돌이 발생합니다. 이제 다음 코드를 고려하십시오. #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> v(1); } 놀랍게도 충돌합니다! 역 …
다차원을 취하고 std::vector깊이 (또는 차원 수)를 템플릿 매개 변수로 전달 해야하는 함수가 있습니다. 이 값을 하드 코딩하는 대신 깊이를 값 으로 반환 하는 constexpr함수 를 작성하고 싶습니다 .std::vectorunsigned integer 예를 들면 다음과 같습니다. std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { { 4, 5}, …