Использование std::transform и tr1::bind для преобразования вектора std::complex ⇐ C++
-
Anonymous
Использование std::transform и tr1::bind для преобразования вектора std::complex
Для получения std::vector из std::complex я хотел бы преобразовать его в вектор, содержащий только действительную часть комплекса, разделенную на некоторый постоянный коэффициент. Прямо сейчас я делаю это:
std::vector vec; std::vector realVec; двойная норма = 2,0; ... for (std::vector::iterator it = vec.begin(), itEnd = vec.end(); it != itEnd; ++it) realVec.push_back((*it).real() / норма); Конечно, это работает нормально, но я ищу способ использовать std::transform для достижения того же самого. Я пробовал:
transform(vec.begin(), vec.end(), back_inserter(realVec), tr1::bind(divides(), tr1::bind(&complex::real, tr1::placeholders::_1), норма)); Но это не сработает. У меня такая ошибка:
ошибка: нет соответствующей функции для вызова 'bind(, std::tr1::_Placeholder&)'| Я не понимаю, почему существует «неразрешенный тип перегруженной функции».
Может кто-нибудь объяснить мне, в чем дело?
Для получения std::vector из std::complex я хотел бы преобразовать его в вектор, содержащий только действительную часть комплекса, разделенную на некоторый постоянный коэффициент. Прямо сейчас я делаю это:
std::vector vec; std::vector realVec; двойная норма = 2,0; ... for (std::vector::iterator it = vec.begin(), itEnd = vec.end(); it != itEnd; ++it) realVec.push_back((*it).real() / норма); Конечно, это работает нормально, но я ищу способ использовать std::transform для достижения того же самого. Я пробовал:
transform(vec.begin(), vec.end(), back_inserter(realVec), tr1::bind(divides(), tr1::bind(&complex::real, tr1::placeholders::_1), норма)); Но это не сработает. У меня такая ошибка:
ошибка: нет соответствующей функции для вызова 'bind(, std::tr1::_Placeholder&)'| Я не понимаю, почему существует «неразрешенный тип перегруженной функции».
Может кто-нибудь объяснить мне, в чем дело?
Мобильная версия