Я использовал std :: vector в своей программе, и теперь я понял, что Eigen :: VectorXd значительно облегчит мою задачу. Поэтому я перешел на использование Eigen. Но я не хочу полностью менять программу, поэтому подумал об использовании шаблонов для некоторых ранее определенных функций.
Я новичок в C ++, и программирование шаблонов немного сбивает с толку. Я не могу думать за пределами приведенной ниже программы, что неправильно.
using namespace Eigen;
template<class T>
T getvec(T& var)
{
T res;
res[0] = var[0]*3;
res[1]=var[1]*3;
res[2]=var[2]*3;
return res;
}
int main(){
std::vector<double> a(3,1);
Eigen::VectorXi b(3);
b.setOnes();
auto x= getvec(a);
auto y=getvec(b);
}
Можно ли написать шаблонную функцию, которая может принимать std :: vector или Eigen :: VectorXd в качестве параметров?
Мне нужна функция, описанная ниже, которая может принимать оба типа.
std::vector<double> getTransform(std::vector<double>& vec)
{
std::vector<double> res;
res[0] = vec[0]*3.14;
...........
...........
return res;
}