以下是一个解决方案的代码示例:
#include
#include
#include
template
std::vector findNMinElements(const std::vector& vec, int n) {
std::vector result;
if (n <= 0 || n > vec.size()) {
return result;
}
std::vector sortedVec = vec; // 复制原始向量
std::sort(sortedVec.begin(), sortedVec.end()); // 对向量进行排序
// 获取前n个最小元素
for (int i = 0; i < n; ++i) {
result.push_back(sortedVec[i]);
}
return result;
}
int main() {
std::vector vec = {4, 2, 6, 3, 2, 1, 5, 4, 5, 2};
int n = 3;
std::vector result = findNMinElements(vec, n);
std::cout << "前" << n << "个最小元素是:";
for (int i : result) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
运行结果:
前3个最小元素是:1 2 2
这个示例中的findNMinElements
函数接受一个向量和一个整数n
作为输入,返回一个向量,其中包含原始向量中的前n
个最小元素(包括重复元素)。首先,我们对原始向量进行复制并进行排序,然后从排序后的向量中取出前n
个元素并添加到结果向量中。最后,我们在main
函数中调用findNMinElements
函数并打印结果。