【问题标题】:Error when splicing a vector C++拼接向量C++时出错
【发布时间】:2018-07-20 16:29:46
【问题描述】:

我正在尝试使用以下代码在 C++ 中拼接一个向量:

sequence(sequence.begin() + i, sequence.end());

其中sequence 是一个包含整数的向量,i 是一个整数,但是当我运行我的代码时,它会给出以下错误:

error: no match for call to ‘(std::vector<int>) (__gnu_cxx::__normal_iterator<int*, std::vector<int> >, std::vector<int>::iterator)’ sequence(sequence.begin() + i, sequence.end()); ^

我不明白我的代码有什么问题。我使用以下堆栈溢出问题来帮助编写此代码:

Creating a new C++ subvector?

Slicing a vector

【问题讨论】:

标签: c++ vector c++14 splice


【解决方案1】:

您不能这样做,因为sequence 没有重载的调用运算符。在定义对象时,您只能在初始化对象时使用该语法:

int i(1); // ok
i(2); // nope!

您正在尝试执行上面的第二行,但它失败了,因为在这种情况下它不是有效的初始化形式。如果要拼接一个向量,可以使用std::vector::erase

sequence.erase(sequence.begin() + i, sequence.end()); // erases [start, end)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多