Ваш вопрос довольно широкий, другими словами, он требует слишком много. Я просто попытаюсь дать вам несколько советов, из которых вы сможете найти путь к тому, что вам нравится.
A) равноудаленный x
Если ваши значения x
равноудалены, то есть 0, 0.5, 1, 1.5
, тогда нет необходимости хранить их, просто используйте
std::vector<int> y;
, если число переменных неизвестно во время компиляции, в противном случае
std::array<int,N> y;
B) произвольно x
Существует несколько опций, которыезависит от того, что вы действительно хотите сделать. Для простого хранения (x,y)
-пар и печати их на экране все они работают одинаково хорошо.
map
std::map<int,int> map_x_to_y = { { 1,1}, {2,4}, {3,9}};
// print on screen
for (const auto& xy : map_x_to_y) {
std::cout << xy.first << ":" xy.second;
}
вектор пар
std::vector<std::pair<int,int>> vector_x_and_y = { { 1,1}, {2,4}, {3,9}};
Печать на экране фактически такая же, как и с map
. Преимущество карты в том, что у нее упорядочены элементы, хотя это не относится к вектору.
C) не использует контейнер
Для облегченных вычисленийВы можете не хранить пары (xy)
, а просто использовать функцию:
int fun(int x) { return x*x; }
TL; DR / более сфокусированный
Вектор хранитодин тип. Вы не можете иметь std::vector<int,int>
. Если вы посмотрите документацию std::vector
, то обнаружите, что вторым параметром шаблона является распределитель (что-то, о чем вам, вероятно, не придется беспокоиться в течение некоторого времени). Если вы хотите сохранить два значения как один элемент в векторе, вы должны использовать std::vector<std::pair<double,double>>
или другой контейнер.
PS
Я использовал std::pair
в приведенных выше примерах. Тем не менее, я считаю хорошей практикой называть вещи, когда только могу, и оставлять std::pair
для случаев, когда я просто не могу дать имена лучше, чем first
и second
. В этом духе вы можете заменить std::pair
в приведенных выше примерах на
struct data_point {
int x;
int y;
};