# Handling default value for int64_t representing an edge in an adjacency matrix [closed]

I'm writing an adjacency matrix, in this moment I'm trying to figure out how to indicate a default numeric value for an unassigned edge. There is the macro _I64_MAX but it is said that it's a bad practice to use macros. I wish to know if there's other way to assign such value (as a keyword as in the case of nullptr instead of NULL) or if what I'm doing is OK.

Why don't I use 0? Because the distance for an edge which start and end vertex is the same is: $$e=(v_i,v_i);~~~||e||=0$$

AdjacencyMatrix::AdjacencyMatrix(const SinglyLinkedList &vertices) : vertices_(vertices)
{
this->edge_matrix_ = new int64_t *[this->vertices_.Size()];
for (size_t i = 0; i < this->vertices_.Size(); i++)
{
this->edge_matrix_[i] = new int64_t[this->vertices_.Size()];
for (size_t j = 0; j < this->vertices_.Size(); j++)
{
this->edge_matrix_[i][j] = _I64_MAX;
}
}
}

• This is the wrong site for this question. Maybe a mod will move it to stack-overflow or something like that. – Martin York Jul 16 at 21:51
• You may find this page interesting: en.cppreference.com/w/cpp/types/numeric_limits – Martin York Jul 16 at 21:52
• No because it is related to best practices, at first I doubted but I read the faq – Miguel Avila Jul 16 at 21:53
• It's OK to ask "Does this code follow common best practices?", but not "What is the best practice regarding X?" – Martin York Jul 16 at 21:57

In this case, the macro you using is from a library header that was included with your compiler. This header (ultimately limits.h, although <climits> is usually used with C++ code) is also used by C code, so C++ specific language features cannot be used. These are OK to use.
The C++ way of referencing a minimum value for a type is to make use of std::numeric_limits (in the <limits>) header. In your case, you can replace _I64_MAX with std::numeric_limits<int64_t>::min().
All of the references to this-> are unnecessary and can be removed from your code. You rarely need to specify this in C++ code (there a few specific cases where it is needed, like for variable name disambiguation or calling a function thru a member function pointer).
The for loop might be able to be rewritten using iterators or the range-for style if this is supported by the SinglyLinkedList type.