【发布时间】:2015-11-25 05:06:52
【问题描述】:
我目前正在尝试编写一个带有向量返回类型的程序。它一直在崩溃。我认为问题是编译器在向量创建期间没有为新向量初始化内存。但我不太确定问题是什么。如果有人可以提供帮助,将不胜感激。泰。
//Settings-->compiler-->(Have g++ follow the c++11 ISO c++ language standard [-std=c++11]
#include <iostream>
#include <vector>
#include <array>
#include <iomanip>
using namespace std;
void displayVector(vector<double> &);
vector<double> calcVolts(vector<double> &U, vector<double> &V);
int main()
{
vector<double> current {10.62, 14.89, 13.21, 16.55, 18.62, 9.47, 6.58, 18.32, 12.15, 3.98};
vector<double> resistance { 4.0, 8.5, 6.0, 7.35, 9.0, 15.3, 3.0, 5.4, 2.9, 4.8};
//displayVector(current);
//displayVector(resistance);
calcVolts (current, resistance);
}
void displayVector(vector<double> &object)
{
for (int R = 0; R <object.size(); ++R)
{
cout<< setw(5)<< R+1<< "\t"<< object[R]<<endl;
}
}
vector<double> calcVolts(vector<double> &U, vector<double> &V)
{
std::vector <double> Voltage;
if ((U.size() == V.size()) == false )
{
cout<<"Invalid Matrix Multiplication: Size do not match.\n\n";
}
else
{
for (int R = 0; R <U.size(); ++R)
{
Voltage[R] = U[R]*V[R];
}
return Voltage;
}
}
查看@Nandu 和@soulsabr 的评论
答案:
来自@Soulsabr: 初始化之前的向量也应该声明它的大小。
来自@Nandu: 局部变量没有返回类型。
来自@Soulsabr: {您当然可以退货。在 std::vector 的情况下,将制作一个副本,以便在超出范围时可以销毁本地副本。你绝对不能做的是返回一个指向本地对象的指针。}
【问题讨论】:
标签: c++ memory vector multiplication