C ++:如何在向量中挑选出最后四分之一的元素?

时间:2011-04-02 14:34:00

标签: c++ vector

在包含N个元素的向量中挑选最后四分之一元素的最佳方法是什么?

2 个答案:

答案 0 :(得分:7)

size_t   n = src.size();
std::vector<int> dest(src.begin() + (3*n)/4, src.end());

dest包含源向量src中的最后四分之一元素。

您还可以使用std::copy头文件中的<algorithm>作为

std::vector<int> dest_copy;
std::copy(src.begin() + (3*n)/4, src.end(), std::back_inserter(dest_copy));

请参阅ideone上的在线演示:http://ideone.com/qrVod

我认为,您可能希望在表达式(3*n)/4上更多地工作。就像n说5时一样,您只想选择1元素,但当n7时,您可能想要选择2而不是1 {1}}。所以这个决定取决于你。我的解决方案只是告诉你,一旦你确定了多少元素,你将如何复制元素!

答案 1 :(得分:1)

这样的事情,我想:

size_t lastQuarter = myVector.size() * 3 / 4;
for (size_t i = lastQuarter; i < myVector.size(); i++)
{
  doSomething(myVector.at(i));
}