tablice c++

0

witam
muszę wykonać pewien projekt w którym chcę użyć tablic. Dużym ułatwieniem było by aby numery tablic zaczynały się od 1 a nie od 0. Da się to jakoś łatwo zrobic?

1

Zdefiniuj tablicę o 1 element wiekszą niż potrzebujesz i używaj indeksów od 1 ignorując 0.

2

np tutaj masz.

int tablica[10] //wedlug tego co chcesz to ta tablica bedzie 9-cio elementowa. Pamietaj o tym
for (int i = 1 ; i < 10 ; i++)
{ 
  tablica[i] = i*i;
} 

ogolnie troche bez sensu ale ok. To jak wolisz tak to proponuje pisac w LUA. Tam tablice zaczynaja sie od 1

1

int index ( int i )
{
return i-1;
}

int main ()
{
int tab[10];
tab[index(1)] = 1; //itd...
}

4
#include <iostream>
#include <cmath>
#include <cassert>
using namespace std;

template<typename T, int Low, int High>
struct array{
	static constexpr size_t elements_count = abs(Low-High);
	T data[elements_count];
	
	template<typename... Tn>
	array(Tn... tns): data{tns...}{}
	
	size_t size() const{
		return elements_count;
	}
	
	auto begin(){
		return ::begin(data);
	}
	auto begin() const{
		return ::begin(data);
	}
	auto end(){
		return ::end(data);
	}
	auto end() const{
		return ::end(data);
	}
	
	auto low() const{
		return Low;
	}
	
	auto high() const{
		return High;
	}
	
	T &operator[](int idx){
		assert(idx >= low() && idx < high());
		return data[idx-low()];
	}
	const T&operator[](int idx) const{
		assert(idx >= low() && idx < high());
		return data[idx-low()];
	}
};

int main() {
	array<int, 2, 5> table = {1, 2, 3};
	
	for(int i = table.low(); i < table.high(); ++i){
		cout << "table[" << i << "]: " << table[i] << endl;
	}
	return 0;
}
2

Dlaczego jeszcze nikt nie napisał, że tablice od 1 wcale nie są ułatwieniem? Jasne, istnieją sytuacje, w których chcielibyśmy tablice [-10...10] bo odpowiada to logicznym aspektom algorytmu, ale w ogromnej większości numerowanie od 0 jest okej. Lepsze niż od 1. Trzeba się przyzwyczaić, tyle.

0

powiem tyle... po co ci to? praktycznego zastosowania nie ma, a wygoda jest praktycznie żadna... jak masz z tym jakiś duży problem to napisz sobie klasę z przeciążonym operatorem [] i po problemie

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