這是我的代碼,我無法找到洗掉陣列中所有 Apple elem 的方法。我能夠數出陣列中的蘋果數。我希望有人能幫幫忙...
string items[10] = { "Apple", "Oranges", "Pears", "Apple", "bananas", "Apple", "Cucumbers", "Apple", "Lemons", "Apple" };
//Counts the total amount of apples
int n = sizeof(items) / sizeof(items[0]);
cout << "Number of times Apple appears : "
<< count(items, items n, "Apple");
//remove the element Apple from array
if (string items[].contains("Apple"))
{
items[].remove("Apple");
}
uj5u.com熱心網友回復:
您可能會有的一些選擇是:
- 遍歷您的專案陣列并將您的
"Apple"字串替換為空字串。 - 使用 a
std::vectorof strings 以及是否 a) 使用專案陣列對其進行初始化,然后呼叫std::erase_if(C 20) 以洗掉"Apple"字串,或者 b) 將其初始化為不帶元素,然后呼叫std::copy_ifwithstd::back_inserter以附加非"Apple"字串。
[演示]
#include <algorithm> // copy_if, transform
#include <iostream> // cout
#include <string>
#include <vector> // erase_if
int main()
{
{
std::string items[10] = { "Apple", "Oranges", "Pears", "Apple", "bananas", "Apple", "Cucumbers", "Apple", "Lemons", "Apple" };
std::transform(std::begin(items), std::end(items), std::begin(items), [](auto& s) {
return (s == "Apple" ? "" : s);
});
for (const auto& s : items) { std::cout << s << ", "; }
std::cout << "\n";
}
{
const std::string items[10] = { "Apple", "Oranges", "Pears", "Apple", "bananas", "Apple", "Cucumbers", "Apple", "Lemons", "Apple" };
std::vector<std::string> v{std::cbegin(items), std::cend(items)};
std::erase_if(v, [](auto & s) { return s == "Apple"; });
for (const auto& s : v) { std::cout << s << ", "; }
std::cout << "\n";
}
{
const std::string items[10] = { "Apple", "Oranges", "Pears", "Apple", "bananas", "Apple", "Cucumbers", "Apple", "Lemons", "Apple" };
std::vector<std::string> v{};
std::copy_if(std::cbegin(items), std::cend(items), std::back_inserter(v), [](auto& s) {
return s != "Apple";
});
for (const auto& s : v) { std::cout << s << ", "; }
}
}
// Outputs:
//
// , Oranges, Pears, , bananas, , Cucumbers, , Lemons, ,
// Oranges, Pears, bananas, Cucumbers, Lemons,
// Oranges, Pears, bananas, Cucumbers, Lemons,
uj5u.com熱心網友回復:
洗掉陣列中多個元素的最簡單和最有效的方法是創建一個新陣列:
#include <iostream>
using namespace std;
int main()
{
string items[10] = { "Apple", "Oranges", "Pears", "Apple", "bananas", "Apple", "Cucumbers", "Apple", "Lemons", "Apple" };
string new_items[10];
int new_size = 0;
// construct new array
for (int i = 0; i < sizeof(items)/sizeof(string); i ) {
if ("Apple" != items[i]) {
new_items[new_size ] = items[i];
}
}
// print new array
for (int i = 0; i < new_size; i ) {
cout << new_items[i] << " ";
}
cout << endl;
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412624.html
標籤:
上一篇:推斷獨立函式的命名空間
