拼接向量 C++ 时出错
Error when splicing a vector C++
我正在尝试使用以下代码在 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
你不能这样做,因为 sequence
没有重载调用运算符。您只能在定义对象时初始化对象时使用该语法:
int i(1); // ok
i(2); // nope!
您正在尝试执行上面的第二行,但失败了,因为它不是此上下文中的有效初始化形式。如果要拼接一个向量,可以使用std::vector::erase
;
sequence.erase(sequence.begin() + i, sequence.end()); // erases [start, end)
我正在尝试使用以下代码在 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
你不能这样做,因为 sequence
没有重载调用运算符。您只能在定义对象时初始化对象时使用该语法:
int i(1); // ok
i(2); // nope!
您正在尝试执行上面的第二行,但失败了,因为它不是此上下文中的有效初始化形式。如果要拼接一个向量,可以使用std::vector::erase
;
sequence.erase(sequence.begin() + i, sequence.end()); // erases [start, end)