c++의 std::accumulate 연속 작업,누적 누적 등

2208 단어 c/c++
#include 
#include  
#include 
#include 
#include 

using namespace std;

//http://www.cplusplus.com/reference/numeric/accumulate/
// accumulate example

//100 10 20 30=>100+10*2+20*2+30*2=220
int myfunction(int x, int y)
{
	int ret = x + 2 * y;
	return ret;
}
struct myclass {
	//100 10 20 30=>100+10*3+20*3+30*3=280
	int operator()(int x, int y) { 
		int ret = x + 3 * y;
		return ret; 
	}
} myobject;

int test_accumulate002() {
	int init = 100;
	int numbers[] = { 10, 20, 30 };

	std::cout << "using default accumulate: ";
	std::cout << std::accumulate(numbers, numbers + 3, init);//    init=100   
	std::cout << '
'; std::cout << "using functional's minus: "; std::cout << std::accumulate(numbers, numbers + 3, init, std::minus());// init=100 std::cout << '
'; std::cout << "using custom function: "; std::cout << std::accumulate(numbers, numbers + 3, init, myfunction);// init=100 myfunction std::cout << '
'; std::cout << "using custom object: "; std::cout << std::accumulate(numbers, numbers + 3, init, myobject);// init=100 myobject () std::cout << '
'; return 0; } //http://en.cppreference.com/w/cpp/algorithm/accumulate //c++ std::accumulate //template T accumulate(InputIterator first, InputIterator last, T init) // , , binary_op。 int main(int argc, char const *argv[]) { int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; size_t size = sizeof(arr) / sizeof(arr[0]); cout <()) << endl;// vector v{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::string s = std::accumulate(std::next(v.begin()), v.end(), std::to_string(v[0]), // start with first element 。 [](std::string a, int b) { return a + '-' + std::to_string(b); }); cout << " =" << s << endl; test_accumulate002(); system("pause"); return 0; }

좋은 웹페이지 즐겨찾기