c ++从向量图中获取向量

时间:2016-08-03 10:45:03

标签: c++ c++11 stdvector stdmap

我有一张矢量地图

map< int, vector<float> > hit = getAlignedHits();

我希望将矢量与特定键配对,例如:

vector<float> vec;
vec = hit[1];

我得到的错误是:

  

候选功能不是         可行的:没有从vector<float, allocator<float>>const vector<double, allocator<double>>的已知转换   第一个论点       vector& operator=(const vector& __x);

我在下面尝试过,没有工作:

    &vec =  hit[1];
  

错误:表达式不可分配

我也在下面尝试过,没有工作:

    map< int, vector<float> >::iterator itr;
    itr = hit.find(1);
    &vec =  itr->second;
  

错误:表达式不可分配

有谁知道为什么这些不起作用,以及如何从地图中获取矢量?

提前多多感谢

编辑: 以下是getAlignedHits的作用以及我在那里使用的变量:

const int NLayer = 6;,  vector<float> *hit_position; double alignmentpar[NLayer];


 map< int, vector<float> > getAlignedHits(){
    double newpos;
    for (int i=0; i<NLayer; i++) {
        vector<float> bla;
        bla.clear();
        hit[i] = bla;
    }

    for (unsigned int ihit=0; ihit<layerID->size(); ihit++) {
        newpos = hit_position->at(ihit) - alignmentpar[layerID->at(ihit)];
        hit[layerID->at(ihit)].push_back(newpos);
    }

 }

2 个答案:

答案 0 :(得分:1)

当然,

 &vec =  ... <something>

不起作用,因为你无法分配某个变量的地址,但是:

  

候选函数不可行:没有来自'vector&gt;'的已知转换'const vector&gt;'对于第一个参数矢量&amp; operator =(const vector&amp; __x);

让我感觉你正试图在const函数中或在应用了一些常量的对象上进行此赋值。请分享更多“原始”代码,以便我们发现错误。

答案 1 :(得分:0)

以下为我工作

std::vector<float> & h0 = hit[0];

或更简单

auto & h0 = hit[0];

一个完整的例子

#include <map>
#include <vector>
#include <iostream>

int main()
 {
   std::map< int, std::vector<float> > hit { { 0, {} } };

   std::vector<float> & h0a = hit[0];
   auto & h0b = hit[0];

   h0a.push_back(2.3);

   std::cout << hit[0].front() << std::endl;
   std::cout << h0a.front() << std::endl;
   std::cout << h0b.front() << std::endl;

   return 0;
 }