У меня есть две векторные структуры, одна содержит коды и стоимость для каждой, а другая - просто заказы, которые содержат запрошенные коды и totalCost (подлежит вычислению)
векторные части (коды, стоимость);
векторные порядки (коды, totalCost); // totalCost установлен в 0;
, где вектор частей содержит что-то вроде ('A', 10, 'B', 20);
, где A и B - части, 10 - стоимость для A, 20 стоит для B.
, а вектор заказов содержит такие заказы, как A, B, C или просто A, B. Скажем, мы получаем заказ из частей A и B.
как нам go добавить эти два на основе стоимости от частей и сохранить результат в новом int, который мы будем использовать позже, чтобы добавить к векторной структуре заказов (totalCost).
Я пытался несколько часов, я думаю, что мне нужно использовать std :: transform и, возможно, std :: аккумулировать? просто не знаю, как соединить их вместе ...
Это то, что я написал до сих пор:
int totalCost;
for(auto i : customers){
for(auto x : parts){
totalCost = accumulate(i.partsList.begin(), i.partsList.end(), ???);
//then need to store cost for each order for use later
}
Я также пытался:
void test(){
int cost;
for(unsigned i =0; i < customers.size(); i++){
for(unsigned x=0; x < partsVec.size(); x++){
for(unsigned z=0; z < customers.at(i).partsList.size(); z++){
if(partsVec.at(x).code == customers.at(i).partsList.at(z)){
cost += partsVec.at(x).cost;
customers.at(i).cost= cost;
}
}
}
}
for(auto i : customers){
cout << i.cost<< endl;
}
}
Это выводит это:
40 //this is correct.
80 //this is incorrect, needs to be 40 as both customers have ordered same parts!
Как вы можете видеть, это продолжает компрометировать, и я не могу найти способ остановить это.
, что я пытаюсь сделать, это получить общая стоимость всех деталей в partsList на основе информации из вектора деталей. В векторе клиентов есть еще один вектор символов, называемый partsList, поэтому я могу изменить totalCost каждого заказа на значение, полученное сверху, используя накопление или другой алгоритм