Faits :
A.
Par jugement du 15 juin 2018, le Tribunal criminel de l'arrondissement de La Côte a libéré X._ du chef de prévention d'assassinat et l'a condamnée, pour meurtre, à une peine privative de liberté de dix ans. Il a en outre ordonné l'instauration d'un traitement ambulatoire en faveur de la prénommée.
B.
Par jugement du 22 novembre 2018, la Cour d'appel pénale du Tribunal cantonal du canton de Vaud, statuant sur les appels formés par X._ et par le ministère public contre ce jugement, a réformé celui-ci en ce sens que la prénommée est condamnée, pour assassinat, à une peine privative de liberté de 15 ans. Il a confirmé le jugement pour le surplus.
La cour cantonale a retenu les faits suivants.
B.a. X._ est née en 1967 à D._. En 1992, elle s'est mariée et a donné naissance à une fille. En 1999, les époux se sont séparés. Le père a obtenu la garde de leur fille dans le cadre de la procédure de divorce, ce que X._ a très mal supporté.
Entre septembre 1997 et mai 2003, cette dernière a été hospitalisée, à quatre reprises, de manière volontaire, principalement en raison de sa consommation excessive d'alcool. Entre le 2 et le 8 novembre 2005, elle a en outre été hospitalisée non volontairement à l'hôpital psychiatrique de E._, en raison d'un risque auto et hétéro-agressif dans un contexte d'alcoolisation massive avec présence de symptômes dépressifs d'intensité moyenne, sans idée suicidaire. A cet endroit, X._ a fait la connaissance de F._, lui-même atteint d'un trouble bipolaire. En 2006, la prénommée a emménagé dans l'appartement qu'occupait ce dernier à G._. En août 2007, elle a à nouveau été hospitalisée en milieu psychiatrique pour un sevrage d'alcool dans un contexte de crise familiale. En septembre 2013, le couple a déménagé à H._, dans un appartement acheté par la famille de F._. Durant leur vie commune, X._ n'a jamais travaillé. Le couple vivait du revenu d'insertion perçu par la prénommée ainsi que de la rente mensuelle que F._ recevait de sa famille.
Les relations qui existaient entre X._ et F._ étaient souvent conflictuelles mais les deux prénommés semblaient avoir besoin l'un de l'autre pour vivre. F._ n'était pas toujours facile à vivre en raison de sa maladie psychique. Il est souvent arrivé qu'il fît preuve de violences verbales, mais non physiques. X._ manifestait en revanche une propension à la violence et à la colère. Les disputes du couple dégénéraient parfois sur le plan physique mais de manière exceptionnelle. X._ était alors à l'origine des altercations.
Le casier judiciaire de X._ ne comporte aucune inscription.
B.b. Le matin du 19 mai 2015, X._ a pris son petit déjeuner avec F._. Elle est partie seule, vers midi, à la gare de H._ afin de se rendre chez son médecin. Fâchée d'avoir raté son train, elle a consommé de la bière dans un pub. Le plat du jour qu'elle avait commandé n'ayant pas été à son goût, elle s'en est prise, à deux reprises, physiquement et verbalement au cuisinier de l'établissement, en le griffant au visage et en lui assénant une claque. La serveuse est intervenue pour calmer X._ et lui faire quitter les lieux. Après cette altercation, la prénommée a appelé la police, en déclarant avoir été giflée par le cuisinier. Les policiers ont constaté que X._ semblait se trouver sous l'influence de l'alcool et ne présentait aucune trace visible sur le visage. Cette dernière s'est ensuite rendue dans d'autres établissements pour y consommer de la bière. Avant de rentrer chez elle, elle a encore acheté des canettes de cette boisson, en sachant que cela pourrait entraîner une dispute avec F._.
Ce dernier était, pour sa part, demeuré au domicile. Entre 18 h 40 et 19 h 10, le couple s'est disputé, deux voisins ayant entendu des cris d'homme et de femme typiques d'une altercation dont les deux intéressés étaient coutumiers. A 18 h 47, X._ a téléphoné à la centrale de police, sans annoncer son identité, en déclarant : "Je suis au I._ et il est bipolaire". L'intervenant de la police cantonale a constaté que la prénommée paraissait sous l'influence de l'alcool et lui a demandé de préciser ce qui se passait. X._ n'a pas répondu. Le policier a répété sa question tandis qu'il entendait la respiration de son interlocutrice. Il a ensuite compris que celle-ci avait posé son téléphone et s'en était éloignée. Après un certain temps, restant sans réponse et sans percevoir de bruit, le policier a raccroché.
Alors que le couple se trouvait dans la cuisine, X._ a saisi un couteau à viande doté d'une lame d'environ 19 cm et a frappé F._ à plusieurs reprises avec cet objet. Ce dernier a perdu beaucoup de sang, mais s'est déplacé vers le vestibule de l'appartement. A cet endroit, X._ a continué à frapper F._, lequel s'est effondré. L'intéressée a encore asséné des coups de couteau au prénommé, notamment au cuir chevelu.
A 19 h 53, X._ a appelé la police, en déclarant qu'il y avait un cadavre chez elle et que celui-ci s'était fait massacrer. Par la suite, elle a spontanément ouvert la porte aux policiers. Ceux-ci ont constaté d'emblée que X._ se trouvait dans un état second, positionnée pieds nus dans une flaque de sang. La prénommée avait du sang sur les vêtements, sur les mains et le visage. Elle est restée dans un mutisme absolu. Les policiers lui ont demandé de sortir de l'appartement et de se diriger vers eux, mais X._ a refusé et est partie en marchant nonchalamment en direction du salon. Les policiers se sont approchés de la porte d'entrée et ont découvert le corps ensanglanté et sans vie de F._.
B.c. X._ a été examinée par les médecins légistes le 19 mai puis le 20 mai 2015. Ceux-ci ont constaté la présence d'ecchymoses d'aspect frais sur divers membres, une ecchymose d'aspect frais en regard de la paupière inférieure de l'oeil gauche, une plaie à bords nets à la face antérieure du membre supérieur gauche ainsi qu'une plaie arrondie, avec un lambeau cutané distal, à la face palmaire de la main droite, en regard de l'articulation inter-phalangienne distale du majeur. Les analyses de sang effectuées ont révélé une alcoolémie moyenne de 0,96 g/kg chez X._.
B.d. X._ a fait l'objet d'une expertise psychiatrique réalisée par le département de psychiatrie de l'Hôpital J._. Selon le rapport d'expertise du 8 juillet 2016, la prénommée souffrait d'un trouble mixte de la personnalité, à traits borderlines, narcissiques et histrioniques, d'un trouble dépressif récurrent, de troubles mentaux et troubles du comportement liés à l'utilisation d'alcool, syndrome de dépendance. Selon l'expert, tout au long de la journée du 19 mai 2015, l'intéressée a gardé intacte sa capacité à apprécier le caractère licite ou illicite de ses actes. Sa capacité volitive a cependant été altérée, en raison de l'intrication des effets désinhibiteurs de l'alcool, de la dimension impulsive et du débordement émotionnel représentant les composantes de son trouble de la personnalité. Le nombre de coups de couteau assénés à F._ montrait qu'un temps autre qu'instantané avait été nécessaire, ce qui signifiait que la dimension impulsive n'avait pas pu jouer un rôle déterminant. X._ disposait donc, au moment des faits, d'une capacité préservée d'apprécier le caractère illicite de ses actes, mais d'une capacité à se déterminer altérée dans une mesure légère.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement du 22 novembre 2018, en concluant, avec suite de frais et dépens, principalement à sa réforme en ce sens qu'elle est libérée du chef de prévention d'assassinat et condamnée, pour meurtre, à une peine privative de liberté qui n'excède pas dix ans. Subsidiairement, elle conclut à son annulation et au renvoi de la cause à l'autorité précédente pour nouvelle décision. Elle sollicite par ailleurs le bénéfice de l'assistance judiciaire.

Considérant en droit :
1.
La recourante reproche à la cour cantonale d'avoir établi les faits de manière arbitraire. Elle se plaint en outre, à cet égard, d'une violation du principe "in dubio pro reo".
1.1. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, soit pour l'essentiel de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre pas en matière sur les critiques de nature appellatoire (<ref-ruling> consid. 2.4 p. 368 et les références citées). La présomption d'innocence, garantie par les <ref-law>, 32 al. 1 Cst., 14 par. 2 Pacte ONU II et 6 par. 2 CEDH, ainsi que son corollaire, le principe "in dubio pro reo", concernent tant le fardeau de la preuve que l'appréciation des preuves au sens large (<ref-ruling> consid. 2.2.3.1 p. 348 s.; <ref-ruling> consid. 2a p. 40 s.). En tant que règle sur le fardeau de la preuve, elle signifie, au stade du jugement, que le fardeau de la preuve incombe à l'accusation et que le doute doit profiter au prévenu. Comme règle d'appréciation des preuves (sur la portée et le sens précis de la règle sous cet angle, cf. arrêt <ref-ruling> consid. 2.2.3.3 p. 351 s.), la présomption d'innocence signifie que le juge ne doit pas se déclarer convaincu de l'existence d'un fait défavorable à l'accusé si, d'un point de vue objectif, il existe des doutes quant à l'existence de ce fait. Il importe peu qu'il subsiste des doutes seulement abstraits et théoriques, qui sont toujours possibles, une certitude absolue ne pouvant être exigée. Il doit s'agir de doutes sérieux et irréductibles, c'est-à-dire de doutes qui s'imposent à l'esprit en fonction de la situation objective. Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence au principe "in dubio pro reo", celui-ci n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 2.2.3.3 p. 351 s.; <ref-ruling> consid. 1.1 p. 503; <ref-ruling> consid. 7 p. 82).
1.2. La recourante soutient qu'elle aurait subi des violences physiques infligées par F._.
1.2.1. Selon la cour cantonale, la femme de ménage du couple avait expliqué que les deux intéressés se disputaient souvent verbalement mais qu'elle ne les avait jamais vus se pousser ou se battre. Elle n'avait pas davantage remarqué de traces de coups ni de mobilier cassé. Les voisins entendus avaient confirmé que le couple se disputait régulièrement mais n'avaient jamais assisté à des actes de violence physique. Le tuteur de F._ n'avait jamais perçu une quelconque violence entre les deux intéressés. Les frères et soeurs du prénommé avaient admis que celui-ci pouvait se montrer violent verbalement, mais ils ne l'avaient jamais vu s'en prendre physiquement à la recourante, non plus qu'à ses précédentes amies, ce que l'une d'elles avait d'ailleurs confirmé. En revanche, la recourante montrait une propension à la violence. Ainsi, F._ avait appelé une de ses soeurs pour lui dire que celle-ci l'avait frappé et qu'il présentait des hématomes et des griffures. L'ex-époux de la recourante avait déclaré que celle-ci était très agressive envers lui, qu'elle était souvent dans des états de fureur et qu'elle l'avait déjà frappé au visage. Tous deux avaient eu de nombreuses disputes au cours desquelles la recourante battait son mari. La fille de la recourante avait confirmé que, durant le divorce - très conflictuel - de ses parents, sa mère criait, se montrait très colérique, faisait souvent des scènes, des crises et se montrait violente à l'égard de son père et d'elle-même. Les rares témoins entendus en cours d'enquête ayant évoqué de la violence physique de la part de F._ n'avaient pas assisté à des scènes de lutte mais en avaient entendu parler, en général de la part de la recourante. Le psychiatre qui avait traité cette dernière de 2008 à 2015 avait déclaré que sa patiente souffrait d'un problème d'alcool et qu'elle lui avait déclaré notamment qu'elle recevait des coups de son compagnon, coups qu'elle lui rendait car elle ne se laissait pas faire. Il avait vu celle-ci à une occasion avec des bleus sur les bras et un hématome au visage. La mère de la recourante avait dit beaucoup de bien de F._, tout en signalant que sa fille lui avait indiqué que le prénommé l'avait quelquefois frappée. K._, une amie de la recourante, avait déclaré que le couple avait des relations violentes. Elle avait fait état d'un épisode lors duquel la recourante avait été blessée à la tête après avoir été frappée par F._ et avait dû se faire recoudre à l'Hôpital L._. Or, le dossier avait démontré que la recourante se présentait systématiquement comme la victime d'autrui et que ses déclarations étaient contredites par celles d'autres personnes entendues, comme cela avait été le cas pour l'altercation avec un cuisinier le 19 mai 2015. Il ressortait en outre du dossier que la recourante pratiquait l'automutilation et qu'il lui arrivait de tomber, vraisemblablement à cause de son alcoolémie, éléments qui pouvaient expliquer certaines traces physiques qui avaient pu être observées sur elle par des témoins ou les médecins qui l'avaient examinée peu après les événements du 19 mai 2015.
1.2.2. La recourante développe une argumentation appellatoire et, partant, irrecevable, lorsqu'elle rediscute librement la portée accordée à divers moyens probatoires qui ont été appréciés par la cour cantonale, comme le témoignage de K._ ou les déclarations de son ancien psychiatre. Elle ne démontre pas quelles constatations insoutenables auraient pu être tirées de ces éléments de preuve par l'autorité précédente. Pour le reste, la recourante tente en vain de faire apparaître comme arbitraire l'état de fait ressortant du jugement attaqué sur ce point. En effet, contrairement à ce qu'elle suggère, la cour cantonale n'a pas retenu que F._ n'aurait jamais eu un geste violent à son encontre - y compris au cours des fréquentes disputes du couple -, mais que personne n'avait rapporté avoir vu le prénommé se montrer spontanément violent ou agresser l'intéressée, que cette dernière n'était pas crédible lorsqu'elle prétendait avoir subi des sévices physiques de la part de son compagnon et qu'elle se trouvait en général à l'origine des altercations au sein du couple.
1.3. La recourante prétend que l'autorité précédente n'aurait pas "suffisamment pris en considération la situation particulière des parties", soit la "sensation d'emprisonnement" qu'elle aurait ressentie.
1.3.1. A cet égard, la cour cantonale a indiqué que les allégations de la recourante, selon lesquelles F._ lui aurait imposé durant des années une "pression constante", ce qui aurait engendré chez elle une "infinie souffrance" ainsi qu'un état d'"épuisement total" ne pouvaient être retenues. La recourante avait déclaré sur ce point qu'elle aurait assumé toutes les tâches ménagères en plus des soins prodigués à F._. Or, le couple avait une femme de ménage. Les femmes de ménage successives du couple avaient indiqué que la recourante ne s'occupait pas du ménage, du repassage, de la préparation des repas ou encore des courses. Celle-ci n'avait pas d'emploi et n'avait rien à faire de ses journées. Si la recourante s'imposait un certain nombre de tâches, F._ insistait pour que la femme de ménage assurât néanmoins ses obligations. Selon la cour cantonale, il n'était pas exclu que le prénommé se fût habitué, au fil du temps, à réclamer de la recourante qu'elle fît ce qu'elle avait volontairement commencé à assumer. Les quelques tâches concernées ne pouvaient cependant avoir engendré un état d'"épuisement total" chez la recourante. Cette dernière avait d'ailleurs passé la journée du 19 mai 2015 à boire de l'alcool dans des établissements publics. Elle ne se trouvait donc aucunement en situation "d'esclavage". F._ pouvait certes être de caractère difficile. Rien ne permettait cependant de retenir l'existence d'une violence physique unilatéralement subie par la recourante ni d'un sentiment de peur chez celle-ci. Les rares violences dans le couple évoquées par des témoins avaient pris place dans des altercations avec des coups échangés, dont ceux-ci ignoraient l'initiateur. Il était plus plausible que la recourante en fût à l'origine, celle-ci ayant tendance à se disputer avec tout le monde. Les soeurs et frères de F._ avaient par ailleurs indiqué que le caractère de la recourante était bien plus dominant, tandis que le prénommé était décrit comme "passif". Un frère de F._ avait expliqué que la recourante se sentait "prisonnière", en raison de sa "relation sadomasochiste" et eu égard à son absence de ressources, ce qui l'avait rendue "dépendante". Pour la cour cantonale, l'intéressée était donc satisfaite de vivre avec son compagnon y compris pour des motifs financiers, ce qu'elle avait d'ailleurs admis. De surcroît, la recourante, qui dénigrait F._ et prétendait lui soutirer de l'argent, était allée jusqu'à demander à l'une des soeurs de ce dernier de la payer pour les services qu'elle lui rendait. Ces éléments permettaient d'exclure que l'intéressée se fût trouvée, au quotidien, dans une situation insupportable causée par F._.
1.3.2. On peine à comprendre quels éléments auraient, selon la recourante, été retenus arbitrairement par la cour cantonale. Celle-ci se borne à évoquer, de manière purement appellatoire, divers extraits de témoignages, en relevant qu'elle se sentait "prisonnière" de sa relation. Or, la cour cantonale n'a nullement retenu que l'intéressée était épanouie ou heureuse aux côtés de F._, mais seulement que ce dernier n'exerçait pas une pression constante sur elle, qu'il n'exigeait pas de sa part un travail harassant ni ne lui causait d'importantes souffrances, ce que celle-ci ne conteste pas véritablement. Pour le reste, on ne voit pas en quoi il aurait été insoutenable, pour l'autorité précédente, de retenir que, nonobstant l'absence de ressources financières de la recourante, cette dernière ne se trouvait pas, à l'époque des faits, dans une situation insupportable prétendument causée par F._.
1.4. La recourante reproche enfin à la cour cantonale de ne pas avoir retenu qu'elle aurait été agressée par F._ le soir des faits.
1.4.1. Sur ce point, l'autorité précédente a exposé que l'enquête effectuée parmi les personnes ayant côtoyé la recourante et F._ avait permis de constater que celle-ci avait toujours connu des problèmes relationnels et de violence. Le prénommé avait quant à lui été décrit unanimement comme non enclin à la violence, ou tout au plus à la violence verbale. Rien ne permettait de retenir que, le soir des faits, F._ aurait initié l'altercation. Ce dernier connaissait alors une période calme sur le plan psychique et ne consommait plus d'alcool. Il faisait des reproches à la recourante concernant sa consommation de boisson et cela générait des tensions. Le déroulement de la journée du 19 mai 2015, décrit par la recourante, attestait d'ailleurs de sa volonté de provoquer une dispute avec son compagnon. L'intéressée avait en outre une propension à inverser les rôles et à se présenter comme la victime de la violence d'autrui. Elle avait ainsi maintenu avoir été agressée par un cuisinier le jour des faits, affirmant que les témoins qui avaient contredit sa version des événements mentaient. Par le passé, la recourante avait déjà affirmé à la police avoir été battue durant des heures mais n'avait pas été crue puisqu'elle ne présentait pas la moindre trace de coups. En outre, compte tenu de l'état de santé de F._ - lequel souffrait alors notamment d'une perte de la fonction active de l'épaule, soit d'une limitation des amplitudes articulaires et d'un manque de force -, il était invraisemblable que ce dernier eût accompli les gestes décrits par la recourante, l'eût frappée et menacée de mort en brandissant un couteau au-dessus de sa tête pour le lui planter dans le coeur. Partant, rien ne permettait de croire la recourante lorsqu'elle prétendait avoir été battue ou attaquée au couteau par son compagnon.
1.4.2. La recourante se contente à nouveau de rediscuter de manière purement appellatoire et, partant, irrecevable, l'appréciation des preuves à laquelle s'est livrée la cour cantonale, sans démontrer en quoi celle-ci serait arbitraire. Elle affirme que les événements du 19 mai 2015 n'ont pu être intégralement et précisément établis par le service d'identité judiciaire, ce que la cour cantonale a également relevé. On ne voit pas en quoi des incertitudes concernant la pièce de l'appartement dans laquelle les premiers coups de couteau ont été donnés, la présence de l'ADN de F._ sur le couteau utilisé par la recourante ou encore la voix masculine entendue de manière prépondérante par les voisins lors de la dispute ayant immédiatement précédé l'homicide feraient apparaître comme insoutenables les constatations de la cour cantonale concernant l'absence d'agression de la part du prénommé. Il en va de même s'agissant des déclarations du médecin légiste selon lesquelles les lésions constatées sur la recourante ne permettaient pas d'exclure sa propre version des événements. Compte tenu de la propension à la violence physique de la recourante - en particulier le jour des faits -, de sa tendance à initier les disputes et à agresser F._ en ces occurrences, il n'était nullement arbitraire, de la part de l'autorité précédente, de retenir que le prénommé n'avait pas attaqué l'intéressée avant d'être désarmé puis tué.
1.5. Compte tenu de ce qui précède, le grief doit être rejeté dans la mesure où il est recevable.
2.
La recourante reproche à la cour cantonale de l'avoir condamnée pour assassinat.
2.1. L'assassinat (<ref-law>) est une forme qualifiée d'homicide intentionnel qui se distingue du meurtre ordinaire (<ref-law>) par le fait que l'auteur a tué avec une absence particulière de scrupules. Cela suppose une faute spécialement lourde et déduite exclusivement de la commission de l'acte; les antécédents ou le comportement que l'auteur adopte immédiatement après les faits n'entrent en ligne de compte que dans la mesure où ils y sont étroitement liés, et permettent de caractériser la personnalité de l'auteur (<ref-ruling> consid. 4.1 p. 64).
Pour caractériser la faute de l'assassin, l'<ref-law> évoque les cas où les mobiles, le but ou la façon d'agir de l'auteur sont particulièrement odieux. Le mobile est notamment particulièrement odieux lorsqu'il apparaît futile, l'auteur tuant pour se venger, sans motif sérieux, ou encore pour une broutille. La façon d'agir est particulièrement odieuse lorsqu'elle est barbare ou atroce ou lorsque l'auteur a exploité avec perfidie la confiance de la victime. L'énumération du texte légal n'est pas exhaustive. L'absence particulière de scrupules peut être admise lorsque d'autres éléments confèrent à l'acte une gravité spécifique. C'est ainsi que la réflexion et la planification de l'acte peuvent constituer des éléments susceptibles de conduire à retenir une absence particulière de scrupules. Par la froideur dans l'exécution et la maîtrise de soi, l'auteur manifeste également le plus complet mépris de la vie d'autrui (<ref-ruling> consid. 4.1 p. 64 s.). Pour déterminer si l'on se trouve en présence d'un assassinat, il faut procéder à une appréciation d'ensemble des circonstances externes (comportement, manière d'agir de l'auteur) et internes de l'acte (mobile, but, etc.). Il y a assassinat lorsqu'il résulte de l'ensemble de ces circonstances que l'auteur a fait preuve du mépris le plus complet pour la vie d'autrui. Alors que le meurtrier agit pour des motifs plus ou moins compréhensibles, généralement dans une grave situation conflictuelle, l'assassin est une personne qui agit de sang-froid, sans scrupules, qui démontre un égoïsme primaire et odieux et qui, dans le but de poursuivre ses propres intérêts, ne tient aucun compte de la vie d'autrui. Chez l'assassin, l'égoïsme l'emporte en général sur toute autre considération. Il est souvent prêt, pour satisfaire des besoins égoïstes, à sacrifier un être humain dont il n'a pas eu à souffrir. La destruction de la vie d'autrui est toujours d'une gravité extrême. Pour retenir la qualification d'assassinat, il faut cependant que la faute de l'auteur, son caractère odieux, se distingue nettement de celle d'un meurtrier au sens de l'<ref-law> (<ref-ruling> consid. 4.1 p. 65).
2.2. La cour cantonale a exposé que la recourante n'avait pas agi pour mettre un terme à sa relation avec F._, puisqu'elle avait intérêt à ce que celle-ci se poursuivît. Elle n'avait pas davantage agi en raison d'une situation de "tension extrême" au sein du couple. La recourante et F._ formaient un couple atypique. Tous deux présentaient des troubles mentaux et souffraient ou avaient souffert d'alcoolisme. Ils se disputaient souvent bruyamment, mais il n'existait pas de contentieux durable pour des motifs précis. Le seul sujet de discorde à l'époque des faits semblait avoir été l'alcool, puisque le prénommé était abstinent depuis quelques temps et essayait de convaincre sa compagne d'arrêter la boisson. Le 19 mai 2015, aucun motif de dispute plus sérieux n'était apparu. La recourante n'avait aucune raison de tuer F._. Selon les explications des psychiatres et psychologues ayant participé à l'expertise, le motif du comportement de l'intéressée devait être recherché "dans sa tête" uniquement. La recourante nourrissait de longue date une colère liée sans doute à la tournure insatisfaisante qu'avait pris sa vie. Le 14 mai 2015, sa fille lui avait écrit pour dire qu'elle ne voulait plus la voir. Son état d'esprit expliquait que, le jour des faits, l'intéressée eût agressé un cuisinier avant de tuer son compagnon dans le cadre d'une nouvelle dispute anodine. Elle avait "focalisé sa frustration" sur F._, sans que ce dernier fût responsable de son état mental préexistant. A l'époque des faits, le prénommé connaissait en outre une phase paisible et ne buvait plus d'alcool. En définitive, la recourante avait, en assénant plus de cent coups de couteau à F._, évacué toute sa rage. Ce comportement égoïste apparaissait particulièrement odieux. L'intéressée avait certes souffert de ses relations dysfonctionnelles à autrui, mais refusait d'admettre qu'elle en était la cause. Elle préférait réaménager la réalité à son avantage, en se présentant comme la victime d'autrui ou d'injustices. De surcroît, l'expertise psychiatrique avait confirmé que, compte tenu du nombre de coups de couteau assénés, la recourante n'avait pas agi de manière purement impulsive.
L'autorité précédente a ajouté que, en 2015, la recourante était âgée de 48 ans et F._ de 55 ans. Ce dernier souffrait d'une épaule et présentait une santé suffisamment mauvaise pour que la recourante dût le laver. L'agonie de F._ avait dû être très douloureuse. Comme la recourante l'avait annoncé à la police, celui-ci avait été "massacré", en recevant plus de cent coups de couteau, dont une bonne partie avait occasionné des lacérations superficielles. Le prénommé était décédé d'une hémorragie externe, après avoir tenté de se protéger. La recourante avait continué à s'acharner sur lui bien qu'il se fût effondré en se vidant de son sang. Tout cela avait pris du temps et la recourante n'avait donc pas agi dans l'impulsivité. La façon d'agir de la recourante s'était avérée particulièrement brutale et atroce. Certes, celle-ci n'avait pas tué de sang-froid, puisqu'elle avait alors bu de l'alcool, présentait des troubles de la personnalité affectant ses relations avec autrui et avait laissé éclater sa colère. Elle n'avait pas planifié ni exécuté un plan dans un but précis. Néanmoins, la recourante avait fait montre d'un égoïsme odieux en massacrant, sans réel motif, son compagnon.
2.3. Le raisonnement de la cour cantonale doit être approuvé. La recourante a tué F._ pour un motif aussi égoïste que futile, soit pour se décharger des colères et frustrations accumulées au cours d'une existence médiocre et émaillée d'échecs. En outre, loin de s'être limitée à un geste asséné de manière impulsive, elle s'est longuement acharnée sur le prénommé, en lui portant plus de cent coups de couteau, y compris après que celui-ci s'était effondré et se trouvait à terre en se vidant de son sang. Le mobile et la façon d'agir de la recourante apparaissent ainsi particulièrement odieux.
La recourante énumère pour sa part divers éléments, tous évoqués par la cour cantonale, tendant à démontrer qu'elle ne présenterait pas "la froideur méticuleuse d'un assassin". Or, le fait qu'elle n'eût pas agi de sang-froid ni planifié son acte, ou encore qu'elle eût tué F._ sous le coup de la colère, n'exclut pas la réalisation d'une infraction à l'<ref-law>. L'intéressée a manifesté son total mépris de la vie du prénommé en le supprimant sans motif et de manière atroce. On ne voit pas en quoi le fait que la recourante et F._ se côtoyaient depuis près d'une dizaine d'années et qu'ils se disputaient fréquemment expliquerait l'acte du 19 mai 2015 ou en diminuerait le caractère particulièrement odieux. La recourante se présente derechef comme la victime d'une situation dont le prénommé n'était pas responsable et qui ne permettait en rien de comprendre son geste brutal. Par ailleurs, la légère diminution de responsabilité de la recourante - causée par ses troubles mentaux - a été prise en compte par la cour cantonale dans le cadre de la fixation de la sanction, mais ne permet aucunement d'exclure ou de relativiser l'absence de scrupules avec laquelle celle-ci a occis son compagnon.
Pour le reste, l'argumentation de la recourante est irrecevable dans la mesure où elle s'écarte de l'état de fait de l'autorité précédente, dont l'intéressée n'a pas démontré l'arbitraire (cf. consid. 1 supra). Il en va ainsi lorsque celle-ci soutient que F._ l'aurait agressée le soir des faits ou qu'il l'aurait attaquée avec un couteau avant d'être désarmé.
La cour cantonale n'a pas violé le droit fédéral en condamnant la recourante pour assassinat. Le grief doit être rejeté dans la mesure où il est recevable.
3.
La recourante conteste la quotité de la peine privative de liberté qui lui a été infligée.
Son argumentation est irrecevable dans la mesure où elle suppose une libération du chef de prévention d'assassinat, qu'elle n'obtient pas (cf. consid. 2.3 supra). Elle est également irrecevable dans la mesure où l'intéressée se contente de soutenir - sans présenter une quelconque motivation répondant aux exigences découlant de l'<ref-law> - qu'elle devrait être mise au bénéfice de la circonstance atténuante de la détresse profonde au sens de l'<ref-law>. De surcroît, cet aspect n'a pas été discuté devant la cour cantonale - sans que la recourante soutienne que celle-ci aurait commis un déni de justice formel à cet égard -, de sorte qu'il ne saurait être évoqué pour la première fois devant le Tribunal fédéral (cf. <ref-law>).
4.
Le recours doit être rejeté dans la mesure où il est recevable. Comme il était dépourvu de chances de succès, la demande d'assistance judiciaire doit être rejetée (<ref-law>). La recourante, qui succombe, supportera les frais judiciaires (<ref-law>), dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable. Les intimés, qui n'ont pas été invités à se déterminer, ne sauraient prétendre à des dépens.

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
La demande d'assistance judiciaire est rejetée.
3.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge de la recourante.
4.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 29 mars 2019
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
Le Greffier : Graa