Надеюсь, у вас все хорошо в условиях этого кризиса. Это будет длинный вопрос, но я надеюсь, что вы, ребята, сможете мне помочь.
В настоящее время я пытаюсь понять векторы, шаблоны, структуры. Я создаю функцию с именем create_x_y_vectors (), как вы можете видеть ниже.
template <typename T>
static VectorXY<T> create_x_y_vectors(const std::vector<Point2D<T>> point_vector)
{
// This point object has 2 points, (1, 2) for example
Point2D<T> point;
this->operator[](0) = point[0];
this->operator[](1) = point[1];
VectorXY<T> xy_vec;
size_t vec_length = point_vector.size()
for (size_t i; i < vec_length; ++i) {
point_vector.emplace_back(this->operator[](0));
point_vector.emplace_back(this->operator[](1));
xy_vec.x.emplace_back(point_vector[0])
xy_vec.y.emplace_back(point_vector[1])
}
}
Эта функция, как следует из названия, создает векторы x и y из вектора точек.
VectorXY - это шаблон, который я определил, и он включает в себя:
template <typename T> struct VectorXY {
// This creates a vector of x and Vector of y if the values are pushed back to respective variables, for example:-
// x: 1 2
// y: 3 4
std::vector<T> x;
std::vector<T> y;
};
Кроме того, в настоящее время, даже если функция не работает, я использую emplace_back для сохранения нового значения в векторе.
Есть ли способ избежать использования push_back и emplace_back в for для l oop чтобы сохранить значения в векторе?
Здесь я хочу добиться того, чтобы после вызова функции и передачи вектора или точек в качестве аргумента, она создала 2 вектора, x и y. Но я не понимаю, что я делаю правильно, или, возможно, есть более простой способ добиться этого?
Кроме того, когда я пытаюсь скомпилировать это, я получаю следующую ошибку: «VectorXY» не называет типа
Я прошу прощения за то, что задал так много вопросов, но я занимался этим уже несколько дней и до сих пор не могу понять это.