= is simpler than std::copy, while std::move clear original vector. n
std::equal actually iterate through vector to compare.
note copy are needed since nth_element will shuffle elements in place.
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
vector<int> v{ 7,1,5,9,4,6,8,2,9,0,3 };
vector<int> v_cp=v;
//vector<int> v_cp(11);
//std::copy(v.begin(), v.end(), v_cp.begin());
cout << (equal(v.begin(), v.end(), v_cp.begin())?"true":"false")<< endl;
vector<int> v_mv = std::move(v);
cout << (equal(v_mv.begin(), v_mv.end(), v_cp.begin()) ? "true" : "false") << endl;
const size_t pctil = v_cp.size()*0.75;
nth_element(v_cp.begin(), v_cp.begin() + pctil, v_cp.end());
cout <<"percentile elem="<< v_cp[pctil] << endl;
v_cp.clear();
cout << "sizes " << v.size() << " " << v_cp.size() << " " << v_mv.size() << endl;
std::string s;
getline(cin, s);
return 0;
}
Saturday, November 5, 2016
nth_element as percentile and std::copy vs std::move
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment