初始化vector <int>类型的巨大向量

时间:2018-04-23 03:24:46

标签: c++

大师, 我正在尝试初始化一个巨大的向量&gt;但没有出现以下错误:

  

在抛出&#39; std :: bad_alloc&#39;
的实例后终止调用   what():std :: bad_alloc Aborted

以下是初始化的方式:

vector<vector< int >> result(k, vector<int> (prices.size() + 1, 0)) ;

完整代码:

    class Solution {
public:
    int maxProfit(int k, vector<int>& prices) {

        int sz = prices.size();

        vector<vector< int >> result(k, vector<int> (prices.size() + 1, 0)) ;

        return 1;


    }
};

int stringToInteger(string input) {
    return stoi(input);
}

void trimLeftTrailingSpaces(string &input) {
    input.erase(input.begin(), find_if(input.begin(), input.end(), [](int ch) {
        return !isspace(ch);
    }));
}

void trimRightTrailingSpaces(string &input) {
    input.erase(find_if(input.rbegin(), input.rend(), [](int ch) {
        return !isspace(ch);
    }).base(), input.end());
}

vector<int> stringToIntegerVector(string input) {
    vector<int> output;
    trimLeftTrailingSpaces(input);
    trimRightTrailingSpaces(input);
    input = input.substr(1, input.length() - 2);
    stringstream ss;
    ss.str(input);
    string item;
    char delim = ',';
    while (getline(ss, item, delim)) {
        output.push_back(stoi(item));
    }
    return output;
}

int main() {
    string line;
    while (getline(cin, line)) {
        int k = stringToInteger(line);
        getline(cin, line);
        vector<int> prices = stringToIntegerVector(line);

        int ret = Solution().maxProfit(k, prices);

        string out = to_string(ret);
        cout << out << endl;
    }
    return 0;
}

以下是导致问题的输入1https://text-share.com/view/2481b925

关于可能问题的任何指示都会有所帮助。

1 个答案:

答案 0 :(得分:1)

尝试按max_size()进行检查。该值通常反映容器大小的理论限制。

std::vector<int> TestVec;
    std::cout << "Max elements to reserve: " << TestVec.max_size() << std::endl;