2015-06-26 3 views
0
typedef TriIndex ... 
typedef std::map< TriIndex, unsigned int > VertexMap; 
VertexMap vertex_map; 

for (size_t i = 0; i < face.size(); ++i) { 
    for (size_t j = 0; j < 3; ++j) { 
     std::pair< VertexMap::iterator, bool > rv = vertex_map.insert(std::make_pair( face.v[j], vert_idx_counter)); 
     if (rv.second) { 
      //do stuff 
     } 
    } 
} 

Я достал фрагмент из кода стартового ключа. Я получаю то, что он делает для следующей строки за исключением:std :: map :: insert return value?

std::pair< VertexMap::iterator, bool > rv = vertex_map.insert(std::make_pair( face.v[j], vert_idx_counter)); 

Я понимаю, что линия объявляет пару под названием с.в. с итератором и логическим значением -. Но с правой стороны есть vertex_map.insert - но из того, что я знаю, insert является функцией void. Как вы получаете пару от вставки пары в карту вершин?

+2

«от того, что я знаю»? Вы видели руководство? : http://en.cppreference.com/w/cpp/container/map/insert – ooga

+0

"Возвращает пару, состоящую из итератора, к вставленному элементу (или элементу, который предотвращал вставку), и bool, указывающий, является ли вставка ». - связанная документация –

+0

@ooga wow я всегда думал, что вставка была недействительной ... ну, я должен был сначала проверить руководство – JayC

ответ

0

vertex_map так же, как «станд :: Карта < TriIndex, неподписанный Int>», так что вы вызываете функцию вставки из карты, увидеть документы для получения более подробной информации std::map::insert