#include <iostream>
template<typename T>
class Array
{
private:
int m_capacity = 0;
T* m_data = nullptr;
public:
Array(int capacity) : m_capacity(capacity), m_data(new T[capacity]{})
{
}
~Array()
{
delete[] m_data;
}
T& operator[](int index)
{
return m_data[index];
}
friend std::ostream& operator<< (std::ostream& stream, const Array& array)
{
for (int i = 0; i <= array.m_capacity - 1; i++)
{
// how can i check in here if value under this key contains something that user set manually?
stream << i << ": " << array.m_data[i] << std::endl;
}
return stream;
}
};
int main()
{
Array<int> test = Array<int>(5);
test[0] = 1;
test[1] = 0; // this 0 should be also displayed
test[2] = 3;
/*
result right now:
0: 1
1: 0
2: 3
3: 0
4: 0
what i would like to achieve:
0: 1
1: 0
2: 3
so as you can see i would like to not display element 3,4 because i haven't set these values.
*/
std::cout << test << std::endl;
std::getchar();
return 0;
}
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}