gpt4 book ai didi

c++ - 分配另一个 std::vector 的 std::vector 地址

转载 作者:行者123 更新时间:2023-11-27 23:02:28 29 4
gpt4 key购买 nike

我正在编写一个程序来平衡化学方程式。该程序的工作原理是采用等式字符串,根据等号将其拆分为大小为 2 的 std::vector,然后解析左侧 separatedEquation[0] 和右侧 separatedEquation[1] 分别放入另一组 std::vector 的 leftHalf 和 rightHalf 中。

问题

我有一个函数 Equation::filterEquation,它解析元素名称的 separatedEquation。我想使用指向 leftHalf 或 rightHalf 地址的临时 vector 。我知道这可能令人困惑,但这是我的代码和我正在尝试做的事情。我认为我需要使用指针,但我以前从未使用过指针,而且使用它们效率不高。

void Equation::filterEquation()
{
for(int i=0; i<separatedEquation.size(); i++) //i = index of separated equation
{
int index=0;
std::vector<std::string> equationHalf;
if(i==0)
equationHalf = leftHalf; //set equationHalf to the address of leftHalf
if(i==1)
equationHalf = rightHalf; //set equationHalf to the address of rightHalf
for (std::string::iterator it = separatedEquation[i].begin(); it!=separatedEquation[i].end(); ++it, index++)
{
//Elements are set up so that He = Helium, while H = Hydrogen. This separates the elements based upon upper and lowercae
bool UPPER_LETTER = isupper(separatedEquation[i][index]); //true if character is upperCase
bool NEXT_LOWER_LETTER = islower(separatedEquation[i][index+1]); //true if next is lowerCase
if (UPPER_LETTER)// if the character is an uppercase letter
{
if (NEXT_LOWER_LETTER)
{
std::string temp = separatedEquation[i].substr(index, 2);//add THIS capital and next lowercase
equationHalf.push_back(temp); // add temp to vector
}

else if (UPPER_LETTER && !NEXT_LOWER_LETTER) //used to try and prevent number from getting in
{
std::string temp = separatedEquation[i].substr(index, i);
equationHalf.push_back(temp);
}
}
}
}

}

最佳答案

在一般意义上,您将替换:

std::vector<std::string> equationHalf;

...

equationHalf = leftHalf // same for rightHalf

std::vector<std::string>* equationHalf;

...

equationHalf = &leftHalf // same for rightHalf

然后替换 equationHalf. 的任何实例与 equationHalf-> .

不过,在您的情况下,我可能会认真考虑重新考虑您的设计,例如分解在 equationHalf 上运行的代码。进入一个函数并将其传递给 vector 的引用对 void doStuff(std::vector<std::string> & equationHalf) 进行操作, 然后简单地调用 doStuff(leftHalf)doStuff(rightHalf) .

关于c++ - 分配另一个 std::vector 的 std::vector 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26410776/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com