在包含N个元素的向量中挑选最后四分之一元素的最佳方法是什么?
答案 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
元素,但当n
为7
时,您可能想要选择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));
}