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

C+中的类似拼接+;比如Javascript中的拼接? 在C++中是否有类似的方法/函数,如JavaScript中的拼接?,c++,sdl,splice,C++,Sdl,Splice,W3学校的例子: var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2,1,"Lemon","Kiwi"); 结果将是: 香蕉、橘子、柠檬、猕猴桃、芒果 我不能在C++中做同样的事情。我已经创建了一个盒子阵列,当我点击它们时,它们会一个接一个地消失。我不知道怎么做,请帮忙 我使用SDL库和微软Visual C++ 2010 Express。< /P> < P>如果你使用向量,你可以访问方法: #包括 #包括 #

W3学校的例子:

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.splice(2,1,"Lemon","Kiwi");
结果将是: 香蕉、橘子、柠檬、猕猴桃、芒果

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


我使用SDL库和微软Visual C++ 2010 Express。< /P> < P>如果你使用向量,你可以访问方法:

#包括
#包括
#包括
int main()
{
病媒水果={“香蕉”、“橘子”、“苹果”、“芒果”};
自动位置=水果。开始()+2;
水果.插入(位置,{“柠檬”,“猕猴桃”});
对于C++11中的(自动水果:水果)std::cout:

#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;
    }
}
它是一个模板化版本,因此它不仅可以处理字符串;
函数的行为与JS版本相同,但您必须在此处将向量作为第一个参数传递。

yes-std::vector fruits={“香蕉”、“橙色”、“苹果”、“芒果”};//错误:类型为“std::vector”的对象不允许使用“{…}”进行初始化(自动水果)//错误:无法推断“自动”类型(需要初始值设定项)抱歉,但我需要更多帮助。是的,我问这个问题已经很久了。抱歉,这不起作用,当我在寻找另一个答案时:std::vector fruits={“香蕉”、“橙色”、“苹果”、“芒果”};//错误:对于(自动水果:fruits)的“std::vector”类型的对象,不允许使用“{…}”初始化//错误:无法推断“自动”类型(需要初始值设定项)对不起,我需要更多帮助。是的,我很久没有问这个问题了。@LucasJohansson,我理解你的问题。这里我们使用C++11,你的编译器默认使用C++03。将设置更改为C++11-如果你的编译器是gcc/clang,只需添加
-std=C++11
标志。如果你使用MSVC,请查看项目选项谢谢你的帮助。我不知道我不知道什么是gcc/clang,所以我不认为我使用它。我试图在我的项目中寻找编译器选项(Alt+F7),但找不到任何选项。对不起,但我需要更详细的帮助。好的是,如果我现在了解了这一点,我就不需要再问它了。这将使我未来项目的过程更快。
#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