Mam taki problem potrzebuje tablic int o liczbie elementow 1000 000 ale mi wywala blad, ze za duza wartosc jak sobie z tym poradzic?
Alokujesz dynamicznie?
Nie, wpisane na stale
No ja bym robił to na vectorach, a nie na tablicach.
#include
#include
using namepspace std;
int main(){
vector v(1000000);
return 0;
}
Albo jeżeli nie potrzebujesz już wcześniej stworzonej, to na bieżąco dodawał. Wtedy zamiast vector v(1000000); - vector v; i jak wczytujesz dane robić np:
int a;
scanf("%d", &a); //jeżeli scanf, to jeszcze biblioteka cstdlib
v.push_back(a);
Na stosie (czyli zadeklarowana w środku funkcji) na pewno o wiele za dużo.
Jako zmienna globalna będzie ok.
Vektor moze byc dwuwymiarowy? Bo jesli dziala tak samo jak tablica to wsumie bezroznicy.
Up Masz racje jest ok ale int a[1000000][1000000]; dalej zaduze
vector może być nawet 1000-wymiarowy.
vector > V2;
v.push_back(a); tak jest dla jednowymiarowego, a dla dwu?
v[indeks].push_back(val)?
vector<vector<int> > v;
Próbujesz stworzyć zmienną o rozmiarze 4 terabajtów - dziwisz się? Co tak naprawdę próbujesz zrobić? Bo ewidentnie rozwiązanie, które sobie wymyśliłeś, jest błędne.
Jeżeli masz potrzebę przechowywania tak dużych tablic to na pewno zachodzi przynajmniej jedno z:
-
[*:toovwyp0]Źle skonstruowałeś algorytm[*:toovwyp0]Tablica jest baaardzo rzadka i można ją przechować w strukturze
struct Dane { unsigned y,x; int wartosc; }; vector v; [/code]
Przechowując na tej liście tylko niezerowe wartości.
Czyli jesli uzywam vectorow to w ogole nie musze deklarowac rozmiaru bo same w razie potrzeby sie rozszerzaja?
Same się nie rozszerzają, trzeba wywołać metodę resize() lub push_back().
Mam jeszcze jedno pytakno dotyczace tablic/vectorow. Jak sprawdzic czy tablica a jest zawarta(jest jej elementem) w tablicy b
Dla każdego elementu tablicy a sprawdzić jeżeli rozmiar a_==rozmiar b to posortować a , posortować b, jeżeli dla wszystkich k a [k]==b[k] to a__==b._
Z tym że podejrzewam niepoprawne zrozumienie zadania.
Prawdopodobnie chodziło o to czy każdy element z tablicy b istnieje w tablice a.
Tak, to niemusza byc identyczne tablice. To jest coś jak czy zbiór elementów A jest podzbiorem zbioru B
Jakby sie dalo zrobic tak samo na vektorach: część współna z A i B =A i jesli to by byla prawda to A jest podzbiorem B
A ja ponowię pytanie: co dokładnie chcesz zrobić? Bo rozwiązanie na tablicach zdaje się nie być optymalne.
Mam dane w vectorach i tak jak napisalem wyzej
Mam vector a ktorego elementami sa np 1,2,5,5,3 i vector b 1,6,2,8,4,5,3,5 no i teraz jak sprawdzic czy a jest podzbiorem b (w tym wypadku jest)
Robisz kopie vector’a b np. B , próbujesz usunąć z po kolei B wszystkie elementy zawarte w a , jeżeli nie udało się usunąć kolejnego elementu ze zbioru B (nie ma takiego) to a nie jest podzbiorem b. Jeżeli udało się usunąć wszystkie to a jest podzbiorem b.