簡體   English   中英

如何在 C++ 中初始化向量 bool 矩陣?

[英]How do you initialize a vector bool matrix in C++?

我主要來自 Java 背景(我使用 Java 來應對算法挑戰),但我正在嘗試練習我的 C++。 這是我對需要向量布爾矩陣的問題的解決方案。

class Solution {
public:
    string longestPalindrome(string s) {
        
        string result = "";
        
        vector<vector<bool>> dp(s.length());
        
        for (int i = s.length() - 1; i >= 0; i--) {
            
            for (int j = 0; j < s.length(); j++) {
                
                dp[i][j] = s[i] == s[j] && (j - i < 3 || dp[i + 1][j - 1]);
                
                if (dp[i][j] && (result.empty() || j - i + 1 > result.length())) {
                    
                    result = s.substr(i, j + 1);
                }
                
            }
        }
        
        return result;
    }
};

該解決方案實際上適用於 Java。 在 Java 中,我只是這樣做:

boolean[][] = new boolean[s.length()][s.length()];

如您所見,我想創建一個布爾矩陣,其中行和列的大小均為 s.length()。 不幸的是,在我的 C++ 解決方案中,編譯器給了我這個錯誤:

Line 86: Char 2: runtime error: store to null pointer of type 'std::_Bit_type' (aka 'unsigned long') (stl_bvector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_bvector.h:95:2

我確定問題是我如何初始化向量布爾矩陣。 我能做些什么來解決這個問題? 如何初始化向量矩陣?

您可以像這樣初始化向量矩陣:

std::vector<std::vector<type>> vec_name{ rows, std::vector<type>(cols) };

..在你的情況下是:

std::vector<std::vector<bool>> dp{ s.length(), std::vector<bool>(s.length()) };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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