【发布时间】:2019-07-09 18:34:52
【问题描述】:
我正在尝试使用 C++ 进行一个项目,并尝试将整数类型向量中的值输入到对类型向量中。
我尝试过emplace_back 和push_back,但它不起作用。很可能是由于pair类型的向量。
注意:我正在使用 boost 库,不确定是否有帮助。
typedef unsigned int objecttype;
typedef string operationtype;
typedef unsigned int checkob;
typedef pair<objecttype, operationtype> objectops;
vector<vector<unsigned int>> parameters;
//lines returning values to “parameters”
vector<checkob> checkParams = parameters.at(0); // works fine
vector<objectops> objectParams = parameters.at(1); // below error
错误信息:
error test.cpp:273:30: error: no viable conversion from 'vector<unsigned int, allocator<unsigned int>>' to 'vector<model:: objectops, allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >>>'
stl_vector.h:326:7: note: candidate constructor not viable: no known conversion from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >::value_type' (aka 'std::vector<unsigned int, std::allocator<unsigned int> >') to 'const std::vector<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > &' for 1st argument
stl_vector.h:344:7: note: candidate constructor not viable: no known conversion from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >::value_type' (aka 'std::vector<unsigned int, std::allocator<unsigned int> >') to 'std::vector<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > &&' for 1st argument
stl_vector.h:383:7: note: candidate constructor not viable: no known conversion from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<unsigned int, std::allocator<unsigned int> > > >::value_type' (aka 'std::vector<unsigned int, std::allocator<unsigned int> >') to 'initializer_list<std::vector<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::value_type>' (aka 'initializer_list<std::pair<unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >') for 1st argument
【问题讨论】:
-
错误提示:您无法将
vector<unsigned>转换为vector<pair<unsigned, string>>。 -
你没有。一对总是包含两个值。
-
是的,但是他们无论如何都可以做到这一点吗?
-
不清楚您要做什么。您的参数中似乎有两个
vector<unsigned int>s。你想让parameters[1]的元素组成objectParams中对应元素的第一部分吗?
标签: c++ c++11 data-structures stdvector std-pair