Привет, у меня есть std::vector<std::string>
, содержащие даты, такие как 2011-03-23T12:23:32.123
из этого, я хотел бы gen '2 векторов int
20110323
и 122332123
.Как я могу ускорить эту операцию STL?
Я использую C++
библиотеку под названием Rcpp (это на самом деле не проблема здесь, я думаю, но вы никогда не знаете, так что я поставил Rcpp
тега)
Я сделал это, который делает работу, но это довольно медленно, как могу ли я ускорить это?
Rcpp::List datetimeToInt(vector<string> datetimes){
const int N=datetimes.size();
Rcpp::IntegerVector date(N); //please consider those as std::vector<int>
Rcpp::IntegerVector time(N);
//this is what I want to speed up
for(int i=0; i<N; ++i){
datetimes[i].erase(std::remove_if(datetimes[i].begin(), datetimes[i].end(), not1(ptr_fun(::isdigit))), datetimes[i].end());
date[i] = atoi(datetimes[i].substr(0,8).c_str());
time[i] = atoi(datetimes[i].substr(8,12).c_str());
}
return Rcpp::List::create(_["date"]=date, _["time"]=time);
}
Какие параметры компилятора вы используете? – jtomaszk
'-std = C++ 0x -O2 -Wall -mtune = core2 -c', но я больше ищу' алгоритмический/stl malpractice' ответ – statquant