我想获取向量的最后一个元素,然后将其分配给字符串,但我似乎遇到了问题。
想象一下这个载体已经被填满但是我不知道有多少,所以我试图这样做。
std::vector<std::string> vec;
std::string s = vec.end();
循环是否有效,然后才能获得最后一个索引?
这没用,所以有没有办法让矢量结束?
EDIT ------
out.push_back(r.validateR(str));
appendCustomizedOutput = out.back();
DCS_LOG_DEBUG("END " << appendCustomizedOutput);
split(test,appendCustomizedOutput,boost::is_any_of("\n"));
DCS_LOG_DEBUG("END " << test[0]);
当我尝试打印测试[0]时,没有打印出来,我不知道为什么?
答案 0 :(得分:9)
vector::end()
返回一个迭代器,它超出了向量中的最后一个真实元素(它主要用于迭代时的检查)。
最好的方法是:
std::string s = vec.back(); // last item
正如@JamesKanze和@PeterWood所说,不要忘记检查空载体 - 否则它的未定义行为......
答案 1 :(得分:6)
这就是vec.back()
的用途。只需确保矢量先不为空。
答案 2 :(得分:2)
使用vec.back()
获取对最后一个元素的引用。使用vec.pop_back()
删除最后一个元素(不返回它)。
答案 3 :(得分:1)
container.end()
(或任何类型的容器)将迭代器返回到容器的末尾。要获取容器中的最后一项,您需要container.back()
代替:
std::string s = vec.back();
答案 4 :(得分:1)
end()
返回一个迭代器,引用向量容器中的past-the-end元素。
您需要back()
:它返回对向量容器中最后一个元素的引用。