gpt4 book ai didi

c++ - 使用 std::transform 从特定目标偏移量插入到目标中

转载 作者:行者123 更新时间:2023-11-28 07:35:56 25 4
gpt4 key购买 nike

我需要插入目标 vector ,但不是从 vector 开始,而是使用偏移量。这是我当前的代码,但目标 vector 是从第一个元素填充的。我想利用偏移量变量,从特定位置插入。

有什么建议吗?谢谢

明确一点:我想在目标 vector 上使用偏移量,而不是在源 vector 上。

  #include <cstdlib>
#include <stdlib.h>
#include <map>
#include <vector>
#include <boost/lexical_cast.hpp>
#include <algorithm>
#include<iterator>

using namespace std;

std::string intToStr(int i){

return boost::lexical_cast<std::string>(i);
}

struct Movie
{
Movie()
: id(0), title("title") { }

Movie(int id, const std::string &title)
: id(id), title(title) { }


int id; //!< item index
std::string title; //!< item title
};

struct GetTitle { std::string operator()(const Movie& cat) const { return cat.title; } };

int main(int argc, char** argv) {

int offset = 5;

std::vector<Movie> p_playlist;

for (int i = 0; i < 20; i++)
p_playlist.push_back(Movie(i, std::string("Name ") + intToStr(i)));


std::vector<string> mEntries;
std::transform(p_playlist.begin(), p_playlist.end(), std::back_inserter(mEntries) , GetTitle());


for(int i=0; i < mEntries.size(); i++)
cout << mEntries[i] << endl;

最佳答案

如果目标 vector 没有元素,back_inserter 当然会从第一个元素插入。它只是调用 push_back,没什么神奇的。因此,您必须先插入前 N 个元素,然后再 back_insert 其余元素:

std::vector<string> mEntries;
insertFirstNElems(mEntries);
std::transform(p_playlist.begin(), p_playlist.end(), std::back_inserter(mEntries) , GetTitle());

//... for example:
void insertFirstNElems(std::vector<string>& vec) {
vec.resize(42, "meow");
}

关于c++ - 使用 std::transform 从特定目标偏移量插入到目标中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16770627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com