传递向量作为参考的正确方法是什么
What is the correct way to pass vectors as a reference?
我正在尝试将向量传递给函数作为引用,以便我可以打印内容。问题是以下编译错误。
Print.h:7:19: error: variable or field ‘print_stuff’ declared void
void print_stuff(vector<int> &month_mileage);
^~~~~~
Print.h:7:19: error: ‘vector’ was not declared in this scope
Print.h:7:26: error: expected primary-expression before ‘int’
void print_stuff(vector<int> &month_mileage);
main.cpp: In function ‘int main()’:
main.cpp:20:12: error: ‘print_stuff’ is not a member of ‘Print’
Print::print_stuff(&month_mileage);
^~~~~~~~~~~
Print.cpp:4:19: error: variable or field ‘print_stuff’ declared void
void print_stuff(vector<int> &month_mileage) {
^~~~~~
Print.cpp:4:19: error: ‘vector’ was not declared in this scope
Print.cpp:4:26: error: expected primary-expression before ‘int’
void print_stuff(vector<int> &month_mileage) {
^~~
我相信问题可能与我设置文件的方式有关。从我所做的所有研究中,除了在头文件中 #include 之外,我找不到任何对我有帮助的东西。我认为这是不好的做法,但我知道我可能是错的。
[main.cpp]
#include "Print.h"
#include <vector>
#include <iostream>
using namespace std;
using namespace Print;
int main() {
int num;
vector<int> month_mileage(0,12);
cout << " Please enter your mileage for the past 12 monthsn";
for( int i = 0; i < 12; i++) {
cin >> num;
month_mileage[i] = num;
}
Print::print_stuff(month_mileage);
return 0;
}
[Print.h]---------------------------------------------------
0 #ifndef PRINT_H
#define PRINT_H
namespace Print {
void print_stuff(vector<int> &month_mileage);
};
#endif
[Print.cpp]---------------------------------------------------
namespace Print{
void print_stuff(vector<int> &month_mileage) {
for(int i = 0; i < 12; i++) {
for(int a = 0; a < &month_mileage[i]; a++) {
std::cout <<"|";
}//END FOR
std::cout <<'n';
}//END OUTER FOR
}//END PRINT_STUFF
}
UPDATED CODE is as follows
[Print.h]---------------------------------------------------
#ifndef PRINT_H
#define PRINT_H
#include <vector>
namespace Print {
void print_stuff(std::vector<int> &month_mileage);
};
#endif
[Print.cpp]---------------------------------------------------
namespace Print{
void print_stuff(std::vector<int> &month_mileage) {
for(int i = 0; i < 12; i++) {
for(int a = 0; a < month_mileage[i]; a++) {
std::cout <<"|";
}
std::cout <<'n';
}
}
}
[main.cpp]---------------------------------------------------
#include "Print.h"
#include <vector>
#include <iostream>
using namespace Print;
int main() {
int num;
std::vector<int> month_mileage(0,12);
std::cout << " Please enter your mileage for the past 12 monthsn";
for( int i = 0; i < 12; i++) {
std::cin >> num;
month_mileage[i] = num;
}
Print::print_stuff(month_mileage);
return 0;
}
所以我的问题是我传递引用不正确吗? 还是我设置了头文件?
谢谢
为了解决这个问题,我不得不
列表项
- 将
#include <vector>
添加到Print.h
文件 - 将
#include <vector>
和#include <iostream>
添加到Print.cpp
- 将引用传递为
void print_stuff(std::vector<int> &month_mileage);
请注意,与 C 数组不同,c ++ 类必须像您传递的常规参数一样在它们之前具有和之前,否则它将在传递给它的函数中的堆栈上创建一个副本。
#include<bits/stdc++.h>
using namespace std;
int fun(vector<int> v)
{
//your code here
}
int main()
{
vector<int> v;
int n,x;
cin>>n;enter code here
for(int i=1;i<=n;i++)
v.push_back(x);
cout<<fun(v); // make it void if you need it void.
}
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 通过JNI传递数据数组的最快方法是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 当无法使用模板和宏时,生成类型变体C++代码的最简单方法是什么?
- 在另一个类视图中添加最多2个图表的正确方法是什么
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 在C++中包含原型文件的正确方法是什么?
- 在 OpenCV C++ 中估计基本矩阵之前对相应点进行归一化的正确方法是什么?
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- 将一系列整数放入类的最佳方法是什么?
- 从长整整转换为uint64_t的推荐方法是什么?
- 将此布尔值传递给此函数的最有效方法是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?