Dwuwymiarowy dynamiczny vector.

0

Witam. Na potrzeby zadania potrzebuje zrobic dynamiczny vector dwuwymiarowy ktore bede mogl usunac po zakonczeniu sie petli i z powrotem go wypelniac nowymi danymi. Czytalem podobne tematy na stacku i niestety nic nie znalezlem, nie wiem czy zle szukalem lub po prostu nikt o tym nie pisze. Wiecie moze co jest na rzeczy ?

0

Panie, a pseudo-dwuwymiarowy może być xD
vector<int> a
a trzeba wypełnić
a.push_back(10)

//dla 100 elementów możesz zrobić takie coś
for i in 5: // dzielisz na równe części
for j in 20: // wartość każdej części.
a[(i*20)+j]

A tak serio

vector<vector<int>> a
teraz a[i][j]

vector<int> b
Teraz dodajesz a.push_back(b)

Możesz też własną klasę zrobić.

0

Ogolnie w zadaniu, dla n grafow , mam okreslac czy sa one spojne lub nie. J0ras, chyba mnie zle zrozumiales, lub ja Ciebie, ale ja potafie zrobic vector, glownym problem jest to ze musi byc dynamiczny XDDDD

0

Co rozumiesz przez dynamiczny? Może też źle rozumiem, ale chyba wystarczający będzie 2-wymiarowy widok na 1-wymiarową tablicę.

template<typename T>
class simple_2d_matrix_view
{
	T* data_;
	size_t width_;
	size_t height_;
 
public:
 
	simple_2d_matrix_view(T* ptr, size_t h, size_t w):
		data_{ptr},
		width_{w},
		height_{h}
	{}
 
	size_t width() const { return width_; }
	size_t height() const { return height_; }
 
	T& operator()(size_t h, size_t w) {
		assert(w < width_);
		assert(h < height_);
		return data_[width_ * h + w];
	}
 
	T const& operator()(size_t h, size_t w) const {
		return const_cast<simple_2d_matrix_view&>(*this)(h, w);
	}
};

Szerzej: tutaj

0

Stworzyłem coś takiego:

	std::vector<std::vector<int>> *a{new  std::vector<std::vector<int>>};
	a->resize(5);
	for (int i = 0; i < 5; i++) {
		(*a)[i].resize(5);
	}
	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			(a)[i][j].push_back(i);
		}
	}

	for (int i = 0; i < 5; i++) {
		for (int j = 0; j < 5; j++) {
			std::clog<<(*a)[i][j]<<" ";
		}
		std::clog<<"\n";
	}

coś tu jest nie tak, jeśli ktoś zauważy błąd to z chęcią się dowiem co jest nie tak, gdy dochodzi do zapełniania tego wektora liczbami to dla pierwszej linii jest ok, później się zawiesza, kompilator nie zgłasza błędów.

0

Jeszcze raz powoli.
Na wejsciu mam liczby testow. W tym wypadku t.
I chce po prostu po petli zerowac/usuwac dane z vectora dwuwymiarowego.
tak to by mialo wygladac

#include <iostream>
#include <vector>
#include <stack>

using namespace std;


int main (){
	stack <int> sts;
	int t;
	int n;
	int k;
	int a;
	int b;
	cin>>n;
	for (int i=0; i<t; i++){
		cin>>n>>k;
		vector <vector int> > vec(n+1);
		bool * tablica = new int [n+1];
		for (int i=1; i<=n; i++){ 
			tab[i] = false;
		}
		stack <int> sts;
		for (int i=0; i<k i++){ // wypelnianie danymi
			cin>>a>>b;
			vec[a].push_back(b);
			vec[b].push_back(a);
		}
		// i tutaj chce po zrobieniu wszystkiego chce wyzerowac dane w vectorze i uzyc go do wypelnianie jeszcze raz w nastepnym obiegu petli
	}	
}   

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