如何获取向量的结尾并将其分配给字符串

时间:2012-03-06 14:10:16

标签: c++ string vector

我想获取向量的最后一个元素,然后将其分配给字符串,但我似乎遇到了问题。

想象一下这个载体已经被填满但是我不知道有多少,所以我试图这样做。

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]时,没有打印出来,我不知道为什么?

5 个答案:

答案 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():它返回对向量容器中最后一个元素的引用。