错误是: /usr/include/c++/4.8/bits/stl_algo.h:2159:29:错误:来自' int'的无效转换到#char; char *' [-fpermissive] if(__ comp(* __ i,* __ first))
我正在传递2个字符串X和Y.现在排序应该比较XY和YX,然后返回X,如果XY> YX或返回Y.X和Y将具有类似-33或9999的值。
string Solution::largestNumber(const vector<int> &A) {
int i,n;
vector<string> B;
string str;
for(i=0; i<A.size(); i++)
{
B[i]=to_string(A[i]);
}
sort(A.begin(), A.end(),[](const string lhs, const string rhs){
return rhs+lhs < lhs+rhs;
});
for(i=0; i<A.size(); i++)
{
str+= to_string(A[i]);
}
return str;}
答案 0 :(得分:1)
您在std::sort
的{{1}}范围内呼叫A
,因此比较功能应该比较std::vector<int>
- s。
您最初可以使用0,1,... int
填充B
,然后给出两个索引A.size()-1
和i1
进行比较,构造字符串并进行比较它们。
答案 1 :(得分:0)
错误是:
/usr/include/c++/4.8/bits/stl_algo.h:2159:29: error: invalid conversion from 'int' to 'const char*' [-fpermissive] if (__comp(*__i, *__first))
sort(A.begin(), A.end(),[](const string lhs, const string rhs){...});
您的sort
比较器希望比较两个std::string
。 A
的元素类型为int
。您创建了B
以将A
的元素转换为B
的元素类型std::string
。使用B
。
其他说明:
string Solution::largestNumber(const vector<int> &A) {
int i,n; // n???
// vector<string> B; // B is empty. Calling B[i] will cause a
// segfault for attempting to access memory
// out of bounds.
vector<string> B(A.size()); // Fix: pass in the size. Now creates B
// with size elements that can be accessed.
string str;
// Consider using algorithms like std::transform
for(i=0; i<A.size(); i++)
{
B[i]=to_string(A[i]); // You won't segfault here now.
}
// Corrected your sort.
sort(B.begin(), B.end(),[](const string lhs, const string rhs){
return rhs+lhs < lhs+rhs;
});
// Appending should be done on the sorted string vector. Consider using
// a ranged-based for loop here.
for(i=0; i<B.size(); i++)
{
str+= B[i];
}
return str;
}