vector作为函数返回类型

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

vector<int> fun1(int num)
{
    vector<int> values;
    for (int j = 0; j < num; j++)
    {
        values.push_back(j);
    }
    return values;
}

int main()
{
    vector<int> myvector;
    int i;
    cout << "Please input a number:" << endl;
    cin >> i;
    myvector = fun1(i);
    cout << endl;

    for (int m = 0; m < myvector.size(); m++)
    {
        cout << myvector[m] << endl;
    }
    return 0;
}

/*
vector可以像普通变量那样在函数体内声明后返回:返回的是临时对象 只能复制 不能返回他的引用和迭代器

如果vector 里存的不是基本类型, 而是自定义类型的话,最好重写这个类的拷贝构造函数

vector的底层数据结构是数组,当你用返回对象的方法返回vector时,vector会进行整个数组的拷贝,如果数组较大,那么效率是很低的。
所以,如果你要返回的vector是在函数内部new的,那么可以返回该vector的指针,这样的话你必须注意该vector的释放问题。
另外,由于vector的存储空间位置可能在插入、删除的时候变化,所以要小心迭代器的失效等问题。

Vector的元素类型有要求的,必须要能够支持赋值运算和对象必须可以复制。这是最低要求,还有可能部分元素类型的部分操作不支持。
 */

  

原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11221391.html

时间: 2024-10-04 03:06:25

vector作为函数返回类型的相关文章

c++标准14取消decltype推算函数返回类型

Table of Contents 1. c++11之前不支持auto关键字 2. c++11支持auto关键字 2.1. 但是不能自动推断函数返回类型 2.2. 使用-> decltype来声明返回类型 3. c++14让事情又回到简单 4. 我们该使用哪个c++版本 1 c++11之前不支持auto关键字 下面的代码在c++11中是不支持的 auto add(int a, int b) { int i = a + b; return i; } int main(int argc,char *

c/c++: c++函数返回类型什么情况带const

c++ 函数的返回类型,包括const 什么时候起作用呢? 函数返回值不想其立即修改的. 例子如下,这是一个简单的避免产生隐形返回变量的方法,abc 的函数返回是引用,main函数中第10行,++ 操作是基于 const int & 类型,所以会出错,但以后对改引用的操作不会受到const 约束. 这样的好处是避免了函数返回值与操作符的逻辑错误结合,例如下面的例子中函数返回的++,对于main 函数是不直观的,进一步的应用是在操作符重载方面,见下一情况说明. 1 const int & a

函数指针(函数指针作为函数形参/函数类型作为函数返回类型)

函数指针是指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址.有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的.函数指针有两个用途:调用函数和做函数的参数. 1 #include<stdio.h> 2 int max(int

C++11:类型推导和追踪函数返回类型decltype

参考文章:https://blogs.oracle.com/pcarlini/entry/c_11_tidbits_decltype_part decltype 是 GCC 实现的第一个 C++ 11 新特性.它实际上起源于一个相当古老的 GNU 扩展关键字-- __typeof__.这个非标准关键字也能够在 C 语言中使用,GNU Compiler Collection 的专业用户可能对它更熟悉一些.2008 年,GCC 4.3.x 就实现了这个特性,同时去除了 __typeof__ 的一些缺

vector作为函数返回值

在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比较低了,还有千万别返回引用, 因为你是再函数中定义的vector.一般要将vector作为返回值的话,我们可以这样来实现,我们将它放入函数参数中,添加引用,作为保存数据的容器.例子: 原始的: vector<int> fun1(int num): 更好的处理方法: bool fun1(int nu

Flask04 后台获取请求数据、视图函数返回类型、前台接受响应数据

1 后台获取请求数据 1.1 提出问题 前台发送请求的方式有哪些 后台如何获取这些请求的参数 1.2 前台发送请求的方式 GET.POST.AJAX 点睛:如果不指定请求方式,浏览器默认使用GET请求 点睛:进入登录页面的请求和提交登录信息的请求使用的路径都是一样的,只不过前往登录页面的请求是GET请求,服务器返回的是一个静态的页面:当录入登录信息点击确定后就会向后台发送一个POST请求,后台经过逻辑处理后,如果登录信息正确就会返回一个静态主页面(注意:虽然这两个请求都是使用的一样的路径,但是我

c++11: trailing return type in functions(函数返回类型后置)

In C++03, the return type of a function template cannot be generalized if the return type relies on those of the template arguments. Here is an example, mul(T a, T b) is a function template that calculates the product of a and b. Arguments a and b ar

函数指针与指针函数返回值的区别

指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某一类型的指针定义: 类型标识符 *函数名(参数表)eg: int *f(x,y);函数指针是指向函数的指针变量,即本质是一个指针变量.int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 函数指针与指针函数返回值的区别,码迷,mamicode.com

关于函数返回值的一些见解

我们都知道c++函数返回类型有三种 返回值 返回指针 返回引用.下面简单说说在函数返回的时候到底发生了什么动作. 返回值类型:拿一个很简单的例子:函数定义: int get(){ int n=3; return n;} int main(){ int k=get();} 先看get函数,局部变量n是一个产生在栈区的值,因此在函数结束的时候空间就会被释放,这个函数结束就底是指在return前还是return后呢. 答案是不一定,一般是不会被立刻释放.return这个动作会把n的值复制给一个临时变量