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 ?
Dwuwymiarowy dynamiczny vector.
- Rejestracja: dni
- Ostatnio: dni
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ć.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 19
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
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Szczecin
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
- Rejestracja: dni
- Ostatnio: dni
- Postów: 316
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.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 19
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
}
}