c++ - 如何在一对 vector 中输入单个值?

标签 c++ c++11 data-structures stdvector std-pair

我正在用 C++ 尝试一个项目,我正在尝试输入从整数类型 vector 到对类型 vector 的值。

我已经尝试了 emplace_backpush_back 但它不起作用。很可能是由于 pair 类型的 vector 。

注意:我正在使用 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

最佳答案

您正在尝试分配 std::vector<unsigned int>std::pair<unsigned int, std::string> , 这显然是不可能的。

你可以

  • 分配 std::pair<unsigned int, std::string> 的 vector 到 objectParams
  • 或使用 vector 的一对元素进行列表初始化 unsigned int 的无符号整数 vector (即 parameters ) 和一个 std::string .

你可能是这个意思:

vector<objectops> objectParams ={ {  parameters.at(0).at(0), "string"} };
//                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^    std::pair<objecttype, operationtype>
//                              ^^                                     ^^ for std::vector<objectops>

关于c++ - 如何在一对 vector 中输入单个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56958741/

相关文章:

c++ - 私有(private)类实现中的Pimpl和指针

c++ - C/C++ 中超大静态数组的算术运算

c++函数重载与精确匹配

c++ - 流氓缺少 C++ 符号 - 调试策略?

c++ - emplace_back 不适用于 std::vector<std::map<int, int>>

c++ - 如何编写模板以基于整数/枚举转换为模板化类型

performance - 嵌套循环的大 O 运行时间?

c++ - boost::asio::io_service::run 在没有工作时不返回

Java ConcurrentHashMap 在性能方面优于 HashMap 吗?

data-structures - 在 Clojure 中编写需要指针/引用的数据结构?