关于c ++:向量的连接

Concatenation of vectors

本问题已经有最佳答案,请猛点这里访问。

我为这个头衔道歉,我不知道哪个更好。

所以,基本上,我有一个1d向量,我从这个向量中提取256段数据,直到没有更多的数据了。

1
2
3
4
5
6
7
8
std::size_t begin = 0;
std::size_t nextEnd = 0;        

while (nextEnd < signal.size()) {
  begin = nextEnd;
  nextEnd += 256;
  Transform(signal, begin, std::min(nextEnd, signal.size()));
}

在"transform"函数中,有一个新的临时向量,名为temp_vector,在我的主函数中,我有一个全局1d向量。

我想做的是,这个循环的每次迭代,EDOCX1的值(0)都被推回到global 1D vector的正确位置。

例如:

1
2
3
4
5
6
7
8
std::vector<double> global;
std::vector<double> actual = {1,1,0,0,2, 3, 4 ....., n};  

// here loop over n number of elements

// TRANSFORM:
   // std::vector<double> temp_vector = {10, 50}; // after calculations
   // global.push_back(temp_vector);

因此,在最终结果中,global_vector仍然是一个一维向量,但是,对于每个元素,它将在相同的位置包含所有的值。

希望我已经解释得够多了!


下面是用于数组合并的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <vector>
#include <iostream>

int main() {
        std::vector<int> glob = {1, 2, 3};
        std::vector<int> temp_vector = {4, 5, 6};

        glob.insert(glob.end(), temp_vector.begin(), temp_vector.end());

        std::vector<int>::const_iterator it = glob.begin();
        for(; it != glob.end(); ++it) {
                std::cout << *it <<",";
        }
        return 0;
}

输出:

1
2
./a.out
1, 2, 3, 4, 5, 6,


考虑使用像std::setstd::priority_queue这样的有序容器,并直接插入该容器,而不是使用临时容器。