직접 질문 : 클래스 개체의 복사본이 3 개 (또는 그 이상) 거의 동일하면 어떻게 그 개체 간의 차이점을 가장 잘 (또는 가장 효율적으로) 저장할 수 있습니까?클래스 개체의 복사본이 3 개 * 약간 다를 경우 어떻게 효율적으로 차이점을 저장할 수 있습니까?
배경 : I 매개 변수의 집합을 필요로하는 알고리즘이 있습니다
struct params
{
std::string A;
std::string B;
double C;
double D;
userDefinedTypeDef S;
};
을 그리고 내 알고리즘을 세 번 전화를 걸. 처음에는 C = 3 & S = 'foo'입니다. 두 번째로, C = 4 & S = 'foo'. 그리고 세번째로, C = 4 & S = 'bar'. 주어진 예는 설명을위한 것일뿐 실제 개체는 구조가 아닌 클래스이며 몇백 명의 구성원이 있습니다. 알고리즘을 세 번 이상 호출하고 싶기 때문에이 객체의 여분의 복사본을 가지고 싶지는 않습니다. 그렇다면 두 클래스 객체 간의 차이점 만 저장하는 가장 좋은 패턴/구현/방법은 무엇입니까?
즉, "개체 2는 & (개체 1)과 동일하지만 C = 4"와 다를 수 있습니다.
편집 : : 아래 코멘트에서 언급했듯이 매개 변수 클래스 개체 또는 멤버 개체의 배열뿐만 아니라 함수 호출도 변경하지 않는 것이 좋습니다. 그렇게하기위한 나의 목적은 하나의 복사본을 유지하고, "currentParam"이라고 주장한 다음 연속 호출 간의 차이점 목록을 유지하는 것입니다. 그렇게하면, 변경된 값을 간단히 업데이트 할 수 있고, 나머지는 고정되어 있으며, 주어진 함수를 사용합니다.
그렇다면 가장 쉬운 방법은 무엇일까요? 부울 플래그 'member1_changed'가있는 클래스를 만드시겠습니까? 그런 다음 노동 조합을 사용합니까? 나는 꽤 갇혀있다. 희소 한 매트릭스 스토리지에 대해 약간의 수수께끼와 관련이있을 수있다. 그래서 나는 왜 질문을 던졌다.
[이 질문] (http://stackoverflow.com/questions/52400)도 관련 될 수 있습니다. –
이러한 개체에 대해 무엇을 알고 있습니까? 일부 입력에서 연속 된 전체 물체를 읽고 델타를 계산합니까, 아니면 델타를 직접 읽습니까? 하나의 전체 객체 만 메모리에 저장하고 순서를 유지하려는 경우 각 델타는 이전 객체의 객체 여야합니다. 합리적으로 각 델타를 (field ids + boost :: any 또는 variant 또는 home-spun-union)의 컨테이너로 인코딩하고 클래스에 해당하는 업데이트 함수를 제공 할 수 있습니다. –
전체 개체를 만드는 대신 델타를 직접 만들고 싶습니다. –