ygo*_*dev 0 c++ vector erase push-back
int main(){
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(vec[0]);
for (auto it = vec.begin(); it != vec.end(); it++) {
std::cout << *it << std::endl;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这输出[1,2,1],我理解,因为矢量正在复制vec [0]并将其推回.但是,我希望输出像[2,1]并且好奇我是否可以在不使用push_back()然后必须使用erase()的情况下完成此操作;
目标:我希望能够将向量中的元素移动到结尾,而向量相应地调整自身,所以如果我将第5个位置的元素移动到结尾,原始第5个位置之后的所有元素都会向上移动,所以新的第5个位置将元素放在旧的第6个位置,依此类推.
你可能正在寻找std::rotate.
int main() {
//Fill vector
std::vector<int> vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
//move first element to the end
std::rotate(vec.begin(), vec.begin() + 1, vec.end());
//print content
for (auto e:vec) {
std::cout << e << std::endl;
}
}
Run Code Online (Sandbox Code Playgroud)
参数说明:
基本上,您可以看到第二个参数和第一个参数(此处1)之间的距离作为元素的数量,通过该元素的数量移动范围.
| 归档时间: |
|
| 查看次数: |
2279 次 |
| 最近记录: |