Rose Dewitt-Bukater (Titanic) was a good woman.
Her mother had pressured her into a marriage that she wanted nothing to do with. She cared more about her own status than what was best for her daughter. She'd rather her only little girl build a family with a man she hated so she didn't have to work. She was not only a disgrace of a mother, but as a woman as well.
Jack discovered Rose in an incredibly weakened state. He had previously been drooling over her after first seeing her on the deck. He was able to convince her not to jump. Once saved, he took advantage of her in her vulnerable state, running his game on her, knowing she was engadged. He's definitely not the villain of the story, he did stop her from becoming propeller chum. But, he was never in the right.
Cal was an insecure control freak and a manipulative dick with his money. He was abusive and neglectful to her needs and forbade her from enjoying life outside of him, literally driving her to make an attempt on her own life.
So yeah, I don't blame her for hooking up with a homeless dude in the back of a Model T in the bowels of a luxury liner. Good for her.