如何删除C++二维vector中指定位置的元素?

J-Scarhett 2017-08-18 02:07:10
例如有这样的动态vector:

1, 77, 65, 0, 3, 20,1,2,3,4
3,5,7,6,0,1


如何删除第二行第三列的单个元素?

vector里面有erase,at这几个函数,我想试图这样:

B.erase(B.at(1).begin() + 3);


却不可以:
error:没有与参数列表匹配的重载函数



//at() 函数 返回当前Vector指定位置loc的元素的引用
//begin()函数返回一个指向当前vector起始元素的迭代器.
//iterator erase( iterator loc ); iterator erase( iterator start, iterator end );
//erase函数要么删作指定位置loc的元素,要么删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.
...全文
1048 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
J-Scarhett 2017-08-21
  • 打赏
  • 举报
回复
引用 4 楼 adlay 的回复:
[quote=引用 3 楼 m0_37936453 的回复:] [quote=引用 1 楼 adlay 的回复:] 你的二维是这样定义的吗? std::vector<std::vector<int> > 如果是的话这样删除 B.at(1).erase(B.at(1).begin() + 3);
请问 像我之前那样有什么逻辑错误?B.erase(B.at(1).begin() + 3) 看字面仿佛就是在删除第二行第三列的数啊????[/quote] 对 B 来说, 只能操作他包含的元素, 他并不了解它所包含的元素里面的操作. B.erase 只能从 B 里面删除一行[/quote] 谢谢 知道啦。
www_adintr_com 2017-08-19
  • 打赏
  • 举报
回复
引用 3 楼 m0_37936453 的回复:
[quote=引用 1 楼 adlay 的回复:] 你的二维是这样定义的吗? std::vector<std::vector<int> > 如果是的话这样删除 B.at(1).erase(B.at(1).begin() + 3);
请问 像我之前那样有什么逻辑错误?B.erase(B.at(1).begin() + 3) 看字面仿佛就是在删除第二行第三列的数啊????[/quote] 对 B 来说, 只能操作他包含的元素, 他并不了解它所包含的元素里面的操作. B.erase 只能从 B 里面删除一行
J-Scarhett 2017-08-18
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
你的二维是这样定义的吗? std::vector<std::vector<int> > 如果是的话这样删除 B.at(1).erase(B.at(1).begin() + 3);
请问 像我之前那样有什么逻辑错误?B.erase(B.at(1).begin() + 3) 看字面仿佛就是在删除第二行第三列的数啊????
J-Scarhett 2017-08-18
  • 打赏
  • 举报
回复
天哪!对了!程序运行符合预期实现。可是,为什么还要:B.at(1)
www_adintr_com 2017-08-18
  • 打赏
  • 举报
回复
你的二维是这样定义的吗? std::vector<std::vector<int> > 如果是的话这样删除 B.at(1).erase(B.at(1).begin() + 3);

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧