struktura statyczna/dynamiczna w dynamicznej tablicy

0

Cześć.
Czy niezależnie od użycia vector'a, znajduje się on na stercie czy stosie? Który kod będzie szybszy?

#include <vector>

struct s
{
///...
}

int main()
{
vector<s> tab;
for(int i=0; i<10; i++)
{struct s;
//...
tab.push_back(s);
}
}
#include <vector>

struct s
{
///...
}

int main()
{
vector<s*> tab;
for(int i=0; i<10; i++)
{struct *s = new s();
//...
tab.push_back(s);
}
}
1

vector alokuje obiekty na stercie
http://stackoverflow.com/questions/8036474/when-vectors-are-allocated-do-they-use-memory-on-the-heap-or-the-stack

przy takiej wielkosci danych nie ma znaczenia szybkosc. I duzo wazniejsze sa algorytmy niz to czy uzywasz wskaznikow czy nie.

Uzycie nagiego new jest antyidomem od 2011 roku masz smart pointery

0

Który kod będzie szybszy?
Jak zwykle odpowiedź na to pytanie może dać tylko benchmark.

Ale musiałyby istnieć bardzo poważne i sensowne powody, żebym się bawił w ręczną alokację zamiast polegać na wewnętrznym mechanizmie wektora.
No i na chłopski rozum (który oczywiście nie może się równać z benchmarkiem) alokacja ciągłej pamięci dla całej grupy obiektów będzie szybsza niż alokacja dla każdego obiektu osobno.

1 użytkowników online, w tym zalogowanych: 0, gości: 1