簡體   English   中英

沒有從“double”類型的返回值到函數返回類型“vector”的可行轉換<double> &#39;

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM