[英]Error "No Viable Conversion From Returned Value of Type 'int[2]' to function return type 'vector<int>'"
[英]No viable conversion from returned value of type 'double' to function return type 'vector<double>'
我不知道如何將變量類型 int 轉換為向量。
vector<double> movingTiles(int l, int s1, int s2, vector<int> queries) {
double smalld, t;
for(int i=0;i<queries.size();i++){
smalld = sqrt(2*queries[i]);
if(s2>s1){
t=(sqrt(2)*l-smalld)/(s2-s1);
return t;
}else{
t=(sqrt(2)*l-smalld)/(s2-s1);
return t;
}
}}
如果你想返回一個vector
你應該從方法中return std::vector<double>(1, t)
瘋狂的猜測,但我認為你想要的是這個:
vector<double> movingTiles(int l, int s1, int s2, vector<int> queries) {
double smalld, t;
vector<double> vec_t;
for(int i=0;i<queries.size();i++){
smalld = sqrt(2*queries[i]);
if(s2>s1){
t=(sqrt(2)*l-smalld)/(s2-s1);
vec_t.push_back(t);
}else{
t=(sqrt(2)*l-smalld)/(s2-s1);
vec_t.push_back(t);
}
}
return vec_t;
}
從您評論中的鏈接:
對於形式q i 的每個查詢,Sherlock 必須報告瓦片重疊區域等於q i 的時間。
這讓我相信輸出向量應該與輸入向量queries
具有相同的大小,所以:
vector<double> movingTiles(int l, int s1, int s2, vector<int> queries) {
double smalld, t;
// the vector to return:
vector<double> times;
// reserve space to make push_backs quicker:
times.reserve(queries.size());
// you only need to calculate this once for each set of queries
int rspeed = std::abs(s1 - s2); // the absolute diff in speed
for(int area : queries) {
// your formula:
smalld = sqrt(2 * area);
t = (sqrt(2) * l - smalld) / rspeed;
// store the result
times.push_back(t);
}
// and return the resulting vector:
return times;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.