Jaki jest najszybszy sposób na zresetowanie każdej wartości od a std::vector<int>do 0 i utrzymanie początkowego rozmiaru wektorów? Pętla for z operatorem []?
Po wielu badaniach z valgrind doszedłem do wniosku, że std :: vector tworzy kopię obiektu, który chcesz push_back. Czy to prawda? Wektor nie może zachować odniesienia lub wskaźnika do obiektu bez kopii?! Dzięki
Bardzo lubię wektory. Są sprytne i szybkie. Ale wiem, że istnieje coś takiego jak valarray. Dlaczego miałbym używać valarray zamiast wektora? Wiem, że valarrays mają trochę cukru syntaktycznego, ale poza tym, kiedy są przydatne?
Jeśli mam wektor par: std::vector<std::pair<int, int> > vec; Czy istnieje łatwy sposób sortowania listy w kolejności rosnącej na podstawie drugiego elementu pary? Wiem, że mogę napisać mały obiekt funkcyjny, który wykona pracę, ale czy istnieje sposób na użycie istniejących części STL i std::lesswykonanie tej pracy bezpośrednio? EDYCJA: Rozumiem, że mogę …
Ile danych jest kopiowanych, podczas zwracania std :: vector w funkcji i jak duża będzie optymalizacja, aby umieścić std :: vector w wolnym magazynie (na stercie) i zamiast tego zwrócić wskaźnik, tj. Jest: std::vector *f() { std::vector *result = new std::vector(); /* Insert elements into result */ return result; } …
Szukam ogólnego, wielokrotnego użytku sposobu na przetasowanie std::vectorw C ++. Tak to teraz robię, ale myślę, że nie jest to zbyt wydajne, ponieważ wymaga tablicy pośredniej i musi znać typ elementu (w tym przykładzie DeckCard): srand(time(NULL)); cards_.clear(); while (temp.size() > 0) { int idx = rand() % temp.size(); DeckCard* card …
Wiem, że at()jest to wolniejsze niż []ze względu na sprawdzanie granic, które jest również omawiane w podobnych pytaniach, takich jak C ++ Vector at / [] operator speed lub :: std :: vector :: at () vs operator [] << zaskakujące wyniki !! 5 do 10 razy wolniej / szybciej! …
Mam następujący kod Java z kilkoma dużymi tablicami, które nigdy nie zmieniają swojego rozmiaru. Na moim komputerze działa w 1100 ms. Zaimplementowałem ten sam kod w C ++ i użyłem std::vector. Czas implementacji C ++, który uruchamia dokładnie ten sam kod, to 8800 ms na moim komputerze. Co zrobiłem źle, …
C ++ 14 przedstawia std::dynarray: std :: dynarray to kontener sekwencji, który hermetyzuje tablice o rozmiarze, który jest ustalony w konstrukcji i nie zmienia się przez cały okres istnienia obiektu. std::dynarraymuszą być przydzielane w czasie wykonywania tak samo jak std::vector. Więc jakie są korzyści i wykorzystanie, std::dynarraypodczas gdy możemy używać …
Korzystam z zewnętrznej biblioteki, która w pewnym momencie daje mi surowy wskaźnik do tablicy liczb całkowitych i rozmiaru. Teraz chciałbym użyć, std::vectoraby uzyskać dostęp i zmodyfikować te wartości w miejscu, zamiast uzyskiwać do nich dostęp za pomocą surowych wskaźników. Oto sztuczny przykład, który wyjaśnia tę kwestię: size_t size = 0; …
Rozważ następujący fragment kodu: #include <array> int main() { using huge_type = std::array<char, 20*1024*1024>; huge_type t; } Oczywiście ulegnie awarii na większości platform, ponieważ domyślny rozmiar stosu jest zwykle mniejszy niż 20 MB. Teraz rozważ następujący kod: #include <array> #include <vector> int main() { using huge_type = std::array<char, 20*1024*1024>; std::vector<huge_type> …
Mam funkcję, która przyjmuje wielowymiarowość std::vectori wymaga podania głębokości (lub liczby wymiarów) jako parametru szablonu. Zamiast na stałe wpisywać tę wartość, chciałbym napisać constexprfunkcję, która pobierze std::vectori zwróci głębokość jako unsigned integerwartość. Na przykład: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { { 4, …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.