通过引用将整数向量传递给函数
Passing a vector of integers to a function by reference
我正在将一个整数文件读入std::向量。这部分代码运行良好。我已经通过打印出矢量来检查了这一点。
现在,我想通过引用将这个向量传递到一个函数中。我想通过引用传递它,以便允许函数修改向量的内容。以下是我的代码count_comparison.cpp:
#include "count_comparison.h"
#include "quicksort.h"
int main() {
...
long long int comp_num;
comp_num = quicksort(A,10000,0,9999);
...
}
count_comparison.h包含以下内容:
...
#include <vector>
std::vector <int> A(10000);
...
quicksort.h包含以下内容:
#include <vector>
long long int quicksort(std::vector <int>& A, int n, int l, int r);
quicksort.cpp包含以下内容:
#include "quicksort.h"
long long int quicksort(std::vector <int>& A, int n, int l, int r) {
long long int num;
if (n == 1) {
return 0;
} else {
// modify A
// calculate num and return it
return num;
}
}
当我使用g++(安装在windows中的cygwin上)编译count_comparison.cpp时,我得到以下错误:
/tmp/ccNCnqwV.o:count_comparison.cpp:(.text+0xc6): undefined reference to `quicksort(std::vector<int, std::allocator<int> >&, int, int, int)'
collect2: ld returned 1 exit status
你知道我哪里会出错吗?
我猜您仅用g++ count_comparison.cpp
调用了g++
,这意味着没有提供quicksort
的实现。
长话短说,试着调用g++ -g -o a.out quicksort.cpp count_compaison.cpp
,看看是否一切正常。
长话短说。在c++中,.cpp
文件可以单独编译,这样任何特定文件中的更新都不会导致从头开始构建整个项目。在.cpp
文件中编写实现是一种常用的方法,但在链接之前,每个.cpp
文件都应该分别编译。当使用IDE时,通常项目配置文件告诉IDE把事情搞清楚。但是,如果您通过命令行工具执行此操作,则应编译每个.cpp
和链接。一种方便的方法,虽然不是很优雅,是调用g++
,并让它在调用其他实用程序之前决定输入文件是用于编译还是链接。
一般来说,在处理较大的项目时,应该先尝试g++ -c a.o a.cpp
,然后再尝试ld *.o
,以获得可执行文件。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 如何使用向量的template_back函数
- 如何通过派生类函数更改基类中的向量
- 变量没有改变?通过向量的函数调用
- 一对向量构造函数:初始值设定项列表与显式构造
- 在c++中使用向量时,如何调用构造函数和析构函数
- std::sort()函数无法对向量的一部分进行排序
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- C++中函数的向量返回类型引发错误
- 添加存储在向量中的大整数的函数出现问题
- 如何在 c++ 中定义接受不同参数类型的函数向量?
- 具有 lambda 函数的函数向量
- 你能用参数制作函数向量吗?
- 在C++中使用成员函数向量时,有没有办法实现协变返回类型
- 在编写 lambda 函数向量时出现隔离错误
- 如何在 boost.process 间共享内存中使用复杂结构"push_back"函数向量
- 是否将std矢量重新分配到默认的构造函数向量是擦除的好方法
- 运行提升for_each中的成员函数向量
- 创建和回推函数向量
- C++,指向函数向量的指针的STL映射