怎么取得一个数组中的倒数第二个元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么取得一个数组中的倒数第二个元素相关的知识,希望对你有一定的参考价值。
参考技术A 基本上就你的这两种方法了,至于效率的问题,上面的答案看起来都有一定的道理,但到底哪一个对呢?或者都对?实践是检验真理的标准。测试一下就知道了。
#include <iostream>
#include <iomanip>
#include <Windows.h>
#include <vector>
#include <functional>
using namespace std;
int getbyindex(vector<int>& v)
//int n = v.size();
return v[v.size()-2];
int getbyit(vector<int>& v)
return *(v.end()-2);
double calltime(function<int(vector<int>&)> f,vector<int>& v)
LARGE_INTEGER start;
if (::QueryPerformanceCounter(&start) == FALSE)
throw "foo";
f(v);
LARGE_INTEGER end;
if (::QueryPerformanceCounter(&end) == FALSE)
throw "foo";
return static_cast<double>(end.QuadPart - start.QuadPart);
int main()
vector<int> v;
for(int i = 0;i<100;++i)
v.push_back(rand());
double t = calltime(getbyindex,v);
cout<<setprecision(10)<<t<<endl;
return 0;
大致的测试结果是,getbyindex要快一些。对于vector容器而言,采用index的方法,更加接近其实现底层——数组——的本质,自然有更快的理由。 参考技术B 取从后数第二个元素;或者取数组元素个数函数,再取第(此函数-1)个元素也可以。本回答被提问者采纳
slice()方法:截取数组中的元素
作用:
slice() 方法可从已有的数组中返回选定的元素。
slice()方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
语法:
array.slice(start, end)
- start,可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
- end, 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
注意:
slice() 不会改变原始数组。
实例:
let ages = [33,44,55,66,77];
ages.slice(1,3)
//打印结果[44,55]
ages.slice(-3,-1)
//打印结果[55,66]
ages.slice(-3)
//打印结果[55,66,77]
拓展:
let str="www.runoob.com!";
document.write(str.slice(4)+"<br>"); // 从第 5 个字符开始截取到末尾:runoob.com!
document.write(str.slice(4,10)); // 从第 5 个字符开始截取到第10个字符:runoob
document.write(str.slice())//复制:www.runoob.com!
以上是关于怎么取得一个数组中的倒数第二个元素的主要内容,如果未能解决你的问题,请参考以下文章