gpt4 book ai didi

c++ - 按值传递 vector

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:56 24 4
gpt4 key购买 nike

出于测试原因,我想创建一个使用 vector 对其进行排序的程序。所以我想通过对 vector 进行一定次数排序的基准来计算 CPU 时间。所以原始 vector 需要保持不变,然后使用另一个 vector ,这样才能排序。

所以我所做的是...

#include <iostream>
#include <vector>
#include <random>
#include <chrono>
using namespace std;

typedef vector<int> intv;

int main(){
intv vi;
// Stuff to create my vector with certain characteristics...
intv vii=vi;
cout << "Size: \n";
cin >> tt ;

for(i=0; i<tt; ++i){
tb=sort(t,vii);
m=m+tb;
vii=vi;
}
m=m/tt;
cout << "BS" << m << "\n";

}

所以我通过引用传递 vector ,并为每次排序制作一个拷贝,以便我可以再次排序。我怎样才能更好地做到这一点?按值(value)传递它是否更好,在那种情况下,有人可以为我提供一个最佳方法的最小示例吗?

sort 是一个基本的冒泡排序函数:

double sort(int t, intv &vii){
vii.reserve(t);
bool swapped=true;
int a;
auto t0 =chrono::high_resolution_clock::now();
while (swapped==true){
for (int i=1; i<t; ++i){
swapped=false;
if (vii[i-1]>vii[i]){
a=vii[i];
vii[i]=vii[i-1];
vii[i-1]=a;
swapped=true;
}
}
t=t-1;
}
auto t1 = chrono::high_resolution_clock::now();
double T = chrono::duration_cast<chrono::nanoseconds>(t1-t0).count();
return T;

}

最佳答案

排序后,您必须做一些等同于:

vii=vi;

我认为将 vi 分配给 vii 将是将 vi 的内容复制到 vii 的最有效方法>。你可以试试:

size_t index = 0;
for ( auto const& val : vi )
{
vii[index++] = val;
}

但是,如果第二种方法比第一种方法更有效,我会感到非常惊讶。

关于c++ - 按值传递 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28529525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com