#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
typedef vector <double> record_t;
typedef vector <record_t> data_t;
int sorted(int *data,int max_record_size)
{
}
int main()
{
// Here is the data we want.
data_t data;
// Here is the file containing the data. Read it into data.
ifstream infile( "sort.txt" );
infile >> data;
// Complain if something went wrong.
if (!infile.eof())
{
cout << "Fooey!\n";
return 1;
}
infile.close();
// Otherwise, list some basic information about the file.
cout << "Your CSV file contains " << data.size() << " records.\n";
unsigned max_record_size = 0;
for (unsigned n = 0; n < data.size(); n++)
if (max_record_size < data[ n ].size())
max_record_size = data[ n ].size();
cout << "The largest record has " << max_record_size << " fields.\n";
int i;
for (i=0; i <= max_record_size; i++)
{
cout << "your data contains " << data[ 0 ][ i ] << ".\n";
int temp[max_record_size];
sorted(&data,max_record_size);
//cout << "Your sorted data contains" << sorted [0] [i] << ".\n";
}
cout << "Good bye!\n";
system("PAUSE");
return 0;
}
无法为参数
data_t*' to
int转换1' to
int *' sorted(int *,int)'
我试图将我的数据的指针传递给我的数据列表,这些数据应该包含我的数字列表到我的排序函数我到底做错了什么,请你详细解释一下,这样我就能明白了,谢谢!
答案 0 :(得分:1)
你没有阵列。 C(或C ++)中的数组只是一个整数列表,你可以像你一样传递它。
但是,你有一个向量(我猜测record_t最终是一个int)。 vector&lt;&gt; s的行为很像数组,但它们不是,它们是实际的对象。
您可能想要做的是将您的功能写为
int sorted(data_t& data, int max_record_size)
,您的电话只是
sorted(data,max_record_size);
答案 1 :(得分:0)
data_t
是vector<vector<double>>
。这甚至不接近一系列的整数。您只需要编写一个处理data_t而不是整数的函数。
如果该函数应该排序data
,那么你应该使用std::sort
,为此你需要编写一个比较函数来比较data
的两个元素。为了在排序结果中看到哪一个应该在另一个之前。
以下是使用带有lexicographical_compare的lambda提供此类比较函数的示例。
sort(begin(data),end(data), [](record_t const &lhs,record_t const &rhs) {
return lexicographical_compare(begin(lhs),end(lhs),begin(rhs),end(rhs));]
});
答案 2 :(得分:0)
尝试将 reference
传递给原始矢量。为什么呢?
null
引用,因此参数始终有效你没有做任何指针算术,所以要安全并使用 reference
int sorted(data_t& data, int max_record_size)
{
}
通过您的data_t
结构:
sorted(data, max_record_size);
现在您可以访问sorted
函数中的data_t结构。
同时强>
您知道您的代码不会编译吗?
unsigned max_record_size
和int temp[max_record_size]
无效。如果要在堆栈上分配数组,则需要使用常量。>>
的{{1}}类中的istream
运算符没有重载,因此该语句也被破坏:vector<vector<double>>