在C ++中有类似的方法/函数,比如Javascript中的拼接吗?
W3School的例子:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi");
水果的结果将是: 香蕉,橙,柠檬,猕猴桃,芒果
我不能在C ++中做同样的事情。我创建了一个盒子阵列,当我点击它们时,它们应该逐个消失。我不知道怎么做,请帮忙。
PS。我正在使用SDL库和Microsoft Visual C ++ 2010 Express。
答案 0 :(得分:1)
在C ++ 11中:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template<typename T>
vector<T> splice(vector<T>& v, int start, int howmuch, const vector<T>& ar) {
vector<T> result(begin(v) + start, begin(v) + start + howmuch);
v.erase(begin(v) + start, begin(v) + start + howmuch);
v.insert(begin(v) + start, begin(ar), end(ar));
return result;
}
int main() {
vector<string> fruits = {"Banana", "Orange", "Apple", "Mango"};
auto v = splice(fruits, 2, 1, {"Lemon", "Kiwi"});
cout << "Returned value: " << endl;
for (auto &s: v) {
cout << "\t" << s << endl;
}
cout << endl;
cout << "fruits: " << endl;
for (auto &s: fruits) {
cout << "\t" << s << endl;
}
}
产生输出:
Returned value:
Apple
fruits:
Banana
Orange
Lemon
Kiwi
Mango
这是一个模板化的版本,所以它不仅应该用于字符串; 函数的行为与JS版本相同,但您必须将向量作为第一个参数传递给它。
答案 1 :(得分:0)
如果您使用的是矢量,则可以访问insert
方法:
#include <vector>
#include <iostream>
#include <string>
int main()
{
std::vector<std::string> fruits = {"Banana", "Orange", "Apple", "Mango"};
auto pos = fruits.begin() + 2;
fruits.insert(pos, {"Lemon", "Kiwi"});
for (auto fruit : fruits) std::cout << fruit << " ";
}
产量:香蕉橙柠檬猕猴桃苹果芒果