c++ - 如何在 vector 的前面添加结构?

标签 c++ vector std

int main ()
{
    vector<int> myvector (3,100);

    int myarray [] = { 501,502,503 };
    myvector.insert (myvector.begin(), myarray, myarray+3);

    return 0;
}

有效。

这不是:

typedef struct
{
    float latitude;
    float longitude;
} coordinate;

int main ()
{
    std :: vector <coordinate> previousPoints;

    coordinate start;
    start.latitude  = 22.3;
    start.longitude = 33.4;
    previousPoints.insert (previousPoints.begin (), start, 1);

    return 0;
}

错误:

anisha@linux-trra:~> g++ y.cpp 
y.cpp: In function ‘int main()’:
y.cpp:18:58: error: no matching function for call to ‘std::vector<coordinate>::insert(std::vector<coordinate>::iterator, coordinate&, int)’
/usr/include/c++/4.5/bits/vector.tcc:106:5: note: candidates are: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::iterator, const value_type&) [with _Tp = coordinate, _Alloc = std::allocator<coordinate>, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<coordinate*, std::vector<coordinate> >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = coordinate*, value_type = coordinate]
/usr/include/c++/4.5/bits/stl_vector.h:858:7: note:                 void std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::iterator, std::vector::size_type, const value_type&) [with _Tp = coordinate, _Alloc = std::allocator<coordinate>, std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<coordinate*, std::vector<coordinate> >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer = coordinate*, std::vector::size_type = long unsigned int, value_type = coordinate]
anisha@linux-trra:~>

错误在说什么?这两个示例有何不同?

最佳答案

没有三个参数std::vector::insert将值作为第二个参数的方法。如果你想在前面插入,你可以试试

previousPoints.insert(previousPoints.begin(), start);

顺便说一下,如果您要经常对大 vector 执行此操作,您可能需要考虑使用 std::deque,并使用它的 push_front方法,具有复杂的时间复杂度。

关于c++ - 如何在 vector 的前面添加结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634061/

相关文章:

c++ - 管理器类中的共享指针损坏/不正确?

c++ - boost::program_options 可以使用 "-"以外的定界符吗?

c++ - 在 C++ 中你的类型的 vector

matlab - 如何在 MATLAB 中向量化交集核函数?

c++ - 选择排序循环中的错误

c++ - "::"中的 "::tolower"是什么意思?

c++ - 以随机大小初始化 std::array

c++ - 使用 C++ 以 60fps 的速度流式传输罗技 C922

c++ - 访问 map 元素

c++ - 带有模板的静态变量