>

std :: optional 맵이있는 클래스가 있는데, 여기에서의 이유는 맵을 구성하는 데 비용이 많이 들기 때문에 영향을 최소화하는 방법을 찾고 있다는 것입니다. 맵이 항상 사용되는 것은 아니기 때문에 생각이 사용될 때까지 맵을 구성하는 이유가 생각됩니다.

생성 후 클래스에 값을 추가하는 데 문제가 있거나 구문이 나에게 도움이되지 않습니다.) 어쩌면 약간의 한계를 잘못 이해했을 수 있으며 실제로는이 방법으로 사용할 수 없습니다. 약간의 통찰력이 인정 될 것입니다.

class A {
public:
void addValues() {
_map_value.emplace(/* what goes here ?*/);
// It is expecting something like std::enable_if_t<std::is_constructible<std::map< .... initializer list
}
private:
std::optional<std::map<std::string, ResourceValue>> _map_value{};
};

나는 쌍과 다양한 형태의 직장을 만들려고 노력했습니다. 나는 std :: optional :: emplace를 사용해야한다고 생각하지만, 이것은 나중에 액세스하고지도에 추가하는 것이 아니라 단지 건설을위한 것이라고 생각합니다. 선택적으로 구성한 후이 맵을 어떻게 관리 할 수 ​​있습니까?


  • 답변 # 1

    std::optional<T>::emplace 많은 인수를 취하고의 생성자를 호출합니다. T 관리되는 가치를 제자리에 구축하기 위해 그러한 주장을 이 경우 map 생성자에 매개 변수를 전달하지 않으므로 매개 변수를 사용하지 않습니다.

    옵션이 이미 초기화되어 있는지 미리 확인한 다음 관리 대상 객체에 액세스하십시오. -> :

    if(!_map_value) {           // if the optional is empty
        _map_value.emplace();   // construct
        _map_value->insert(...); // Do stuff with the map
    }
    
    

  • 이전 python - 간단한 가져 오기를위한 패키지 구성
  • 다음 firebase - FutureBuilder에서 속성이 변경 될 때 어떻게 스위치를 "애니메이션"으로 만들 수 있습니까?