Changed ip initialization to happen in a for loop, changed the for loop to initialize every element of the array rather than ignoring the last one
Changed back to std::copy. std::copy, interestingly enough, doesn't like 2D arrays. I made it deal exclusively with memory addresses, which is compiling. No clue if it's working as expected or not, but it compiles and runs without error
Changed as many things back as I could while keeping the code working-able. You may want to look into not having three main methods, and be sure to always return an integer from them
Merge pull request #1 from DethRaid/master

Code fixes