Dwuwymiarowy dynamiczny vector.

Dwuwymiarowy dynamiczny vector.
4d4s001
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
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 ?

J0
  • Rejestracja: dni
  • Ostatnio: dni
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ć.

4d4s001
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

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

Kopiuj
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

PR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 316
0

Stworzyłem coś takiego:

Kopiuj
	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.

4d4s001
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 19
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

Kopiuj
#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
	}	
}   

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.