无法插入qcustomplot :: qcpgraph中的Multimap C



我正在处理一个程序,必须将 QCPGraph从qcustomplot框架中插入std::multimap中。注意:我仍然是C 的新手。但是,我无法做到这一点,这确实令人沮丧。

这是我的代码:

ui->customPlot->addGraph();        
/*
  fill graph with some data
*/
QCPGraph *graph = ui->customPlot->graph(0); 
std::multimap<int, std::pair<std::vector<double>, QCPGraph>, _comparator> myMap; 
//just for demo
std::vector<double> vec; 
vec.at(0) = 2.2; 
myMap.insert(std::make_pair(1, std::make_pair(vec, graph)));

最后一行给我以下编译器错误:

C:pathmainwindow.cpp:178: Error: no matching function for call to 'std::multimap<int, std::pair<std::vector<double>, QCPGraph>, MainWindow::__comparator>::insert(std::pair<int, std::pair<std::vector<double>, QCPGraph*> >)'
     myMap.insert(std::make_pair(1, std::make_pair(vec, graph)));
                                                                 ^
C:QtToolsmingw530_32i686-w64-mingw32includec++bitsstl_multimap.h:524: Error: no type named 'type' in 'struct std::enable_if<false, void>'
       template<typename _Pair, typename = typename
                                ^

我知道这可能与指针和类型有关,但我无法弄清楚。我尝试给出&graph(*graph)插入,这也无法使用。请帮忙。

您的容器是:

std::multimap<int, std::pair<std::vector<double>, QCPGraph>> myMap; 

所以它的value_type是:

std::pair<const int, std::pair<std::vector<double>, QCPGraph>>

所以当您有:

QCPGraph *graph = ui->customPlot->graph(0); 

您需要像这样插入它:

myMap.insert(std::make_pair(1, std::make_pair(vec, *graph)));

或C 11:

myMap.emplace(1, std::make_pair(vec, *graph));

,但我认为该图是Qcustomplot拥有的,因此您实际上应该存储一个指针:

std::multimap<int, std::pair<std::vector<double>, QCPGraph*>> myMap; 
myMap.emplace(1, std::make_pair(vec, graph));

最新更新