C++에서 컬렉션 또는 컨테이너에 알고리즘을 적용하려면 operator()
을 오버로드해야합니다. 예를 들어, 컨테이너 난수를 생성합니다 C++의 펑터와 같은 C# 컨테이너에 알고리즘을 적용하는 방법은 무엇입니까?
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cstdlib>
using namespace std;
class rnd_gen {
public:
rnd_gen(int lo, int up) : lo(lo), up(up) {
}
int operator()() const {
return lo + rand() % up;
}
private:
int lo;
int up;
};
int main() {
vector<int> vt;
vt.push_back(3);
vt.push_back(1);
vt.push_back(2);
generate(vt.begin(), vt.end(), rnd_gen(10, 100));
}
인가
명시 적으로 루프를 작성하지 않고도 작동 이러한 종류의를 수행 할 수 있습니까? 또는 C#에서 가장 유사한 접근법.감사합니다,
찬
생성 대신에'operator()'는 매개 변수를 취하여 변환 된 값을 반환하여 원래 값을 대체합니까? – Skurmedel
@Skurmedel : 네, 그게 내가 원하는 것입니다. – Chan
미래에 귀하의 질문에 귀하가 일하는 데 익숙한 언어로 된 코드 블록이 아니라 무엇을하려고하는지에 대한보다 기술적 인 설명이 포함되어 있다면 도움이 될 것입니다. 그러면 목표 언어에 능통 한 사람들이 소스 언어에 익숙하지 않더라도 도움을 줄 수 있습니다. – unholysampler