2D tablica statyczna lub dynamiczna jak argument jednej funkcji

0

Witam serdecznie,
Zaczynam przygodę z programowaniem i kompletnie nie mogę poradzić sobie z jednym aspektem. Czy możliwe jest stworzenie funkcji, której argumentem będzie mogła być zarówno 2D tablica dynamiczna lub 2D tablica statyczna?

0

Poczytaj o "Templates in C++"

1

Nie używaj tablic tylko std::vector

0

Sęk w tym, że chcę mieć "uniwersalną" funkcję,, która może pobierać jako argument tablicę statyczną albo dynamiczną albo vector.
Przy pobieraniu tablicy dynamicznej do funkcji poniżej dostaje error, działa tylko z tab. statyczną. W jaki sposób skonstruować szablon/funkcję, aby możliwe było przekazanie każdego typu tablicy tj. statycznych i dynamicznych?

template < int Y, int X>

	void max(double (&tab)[Y][X])
0

nie zrobisz uniwersalnej dla tablicy i vectora. musisz wtedy wyspecjalizowac template.

Vector jest obiektem mozesz po nim iterowac
Tablica jest typem wbudowanym, musisz znac wielkosc tablicy

Sam ten fakt juz powinien odwiezc Cie od takiej proby

0

Ok, Vector odkładam póki co na bok. Jak W takim razie stworzyć taką funkcję dla tablic alokowanych statycznie i dynamicznie (w załączony powyżej szablon działa dla tab. statycznej, z kolei próba przekazania tablicy przez wskaźniki działa tylko dla tab. dynamicznych)?

0
domizid napisał(a):

Ok, Vector odkładam póki co na bok.

To ty programujesz w C++ czy w C?

domizid napisał(a):

Sęk w tym, że chcę mieć "uniwersalną" funkcję,, która może pobierać jako argument tablicę statyczną albo dynamiczną albo vector.
Przy pobieraniu tablicy dynamicznej do funkcji poniżej dostaje error, działa tylko z tab. statyczną. W jaki sposób skonstruować szablon/funkcję, aby możliwe było przekazanie każdego typu tablicy tj. statycznych i dynamicznych?

template < int Y, int X>

	void max(double (&tab)[Y][X])

To jest bardzo zły pomysł.
Częściowo da się to zrobić: https://wandbox.org/permlink/xYMxfOc7r0v5G6bm

template<class T> 
void print(T&& b, T&& e)
{
    for (;b != e; ++b)
    {
        for (auto x : *b)
        {
            cout << x << ' ';
        }
        cout << '\n';
    }
    cout << '\n';
}

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