gpt4 book ai didi

c++ - 在 VC++6 中使用 vector 进行数组排序时出错,而在 VC++2012 中没有错误

转载 作者:行者123 更新时间:2023-11-30 01:21:26 28 4
gpt4 key购买 nike

我在 VC++2012 中使用了这行代码来对称为 arrayCosts 的集成行数组进行排序。此代码适用于此版本,但不适用于 VC++6 版本。

vector< vector<float> > my_vector ;
for( const auto& row : arrayCosts ) my_vector.push_back( vector<float>( begin(row), end(row) ) ) ;
sort( begin(my_vector), end(my_vector),
[]( const vector<float>& a, const vector<float>& b ) { return a[1] < b[1] ; } ) ;

VC++6的错误如下。

e:\logistics\projects\10\10\source1.cpp(190) : error C2143: syntax error : missing ',' before ':'
e:\logistics\projects\10\10\source1.cpp(190) : error C2530: 'row' : references must be initialized
e:\logistics\projects\10\10\source1.cpp(190) : error C2059: syntax error : ':'
e:\logistics\projects\10\10\source1.cpp(191) : error C2065: 'begin' : undeclared identifier
e:\logistics\projects\10\10\source1.cpp(191) : error C2065: 'end' : undeclared identifier
e:\logistics\projects\10\10\source1.cpp(192) : error C2059: syntax error : '['
e:\logistics\projects\10\10\source1.cpp(192) : error C2143: syntax error : missing ')' before '{'
e:\logistics\projects\10\10\source1.cpp(192) : error C2143: syntax error : missing ';' before '{'
e:\logistics\projects\10\10\source1.cpp(192) : error C2065: 'a' : undeclared identifier
e:\logistics\projects\10\10\source1.cpp(192) : error C2109: subscript requires array or pointer type
e:\logistics\projects\10\10\source1.cpp(192) : error C2065: 'b' : undeclared identifier
e:\logistics\projects\10\10\source1.cpp(192) : error C2109: subscript requires array or pointer type

最佳答案

您正在尝试将 2011 年的语言功能与 1997 年的编译器一起使用。这是行不通的。

如果你坚持使用 C++98,你可能会取得更大的成功;尽管由于您的编译器甚至早于此,因此不能保证这会起作用。

// Define a comparison functor, to replace the lambda.
// This must be defined outside a function, for arcane reasons.
struct comparator {
bool operator()(const vector<float>& a, const vector<float>& b) {
return a[1] < b[1];
}
};

vector< vector<float> > my_vector ;

// Use an old-school for loop; range-based loops didn't exist back then,
// and neither did "auto" type deduction.
// (This assumes arrayCosts is also a vector<vector<float>>;
// change the iterator type if it's something else).
for (vector< vector<float> >::const_iterator it = arrayCosts.begin();
it != arrayCosts.end(); ++it)
{
// std::begin and std::end didn't exist either
my_vector.push_back( vector<float>( it->begin(), it->end() ) ) ;
}

// Again, no std::begin or std::end.
sort(my_vector.begin(), my_vector.end(), comparator());

关于c++ - 在 VC++6 中使用 vector 进行数组排序时出错,而在 VC++2012 中没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18050756/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com