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 ?
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ć.
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
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
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.
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
}
}