2011-06-23 48 views
8

Tôi gặp lỗi thời gian chạy trong mã sau. Xin vui lòng cho tôi biết tôi có thể sao chép các yếu tố vector trong thiết lập?Tôi có thể sao chép các phần tử 'vector' trong 'bộ' bằng thuật toán sao chép không?

#include <iostream> 
#include <vector> 
#include <set> 
using namespace std; 
int main() 
{ 
    vector<int> v; 
    set<int> kk; 
    set<int>::iterator itr; 
    for (int i = 0; i < 6; i++) 
    { 
     v.push_back(i * 2); 
    } 
    copy(v.begin(), v.end(), inserter(kk, itr)); 
} 

Trả lời

0

Bạn cần khởi tạo trình lặp.

set<int>::iterator itr = kk.end(); 
1

Hãy thử:

copy(v.begin(), v.end(),inserter(kk, kk.end())); 
            // ^^^^^^^^ You need a real iterator. 
20

You are not initialising itr:

set<int>::iterator itr = kk.begin(); 

Hoặc loại bỏ hoàn toàn itr:

copy(v.begin(), v.end(), inserter(kk, kk.begin())); 

Trong trường hợp này, bạn có thể đơn giản khởi kk như vậy (nhưng nếu bạn muốn thêm vàokk theo dòng trên):

set<int> kk(v.begin(), v.end()); 
10

Nếu mục tiêu là để tạo một bộ từ các yếu tố vector (chứ không phải cập nhật một bộ đã tồn tại mà có thể có một số yếu tố trong đó), sau đó thực hiện điều đó, bằng cách sử dụng hàm tạo:

set<int> s(v.begin(), v.end()); 
Các vấn đề liên quan