C ++中的类似拼接就像Javascript中的拼接一样?

时间:2013-06-18 22:18:49

标签: c++ sdl splice

在C ++中有类似的方法/函数,比如Javascript中的拼接吗?

W3School的例子:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi");

水果的结果将是: 香蕉,橙,柠檬,猕猴桃,芒果

我不能在C ++中做同样的事情。我创建了一个盒子阵列,当我点击它们时,它们应该逐个消失。我不知道怎么做,请帮忙。

PS。我正在使用SDL库和Microsoft Visual C ++ 2010 Express。

2 个答案:

答案 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 << " ";
}
  

产量:香蕉橙柠檬猕猴桃苹果芒果

Here is a Demo.