2014-11-27 14 views
6

Tôi rất xin lỗi vì tôi hỏi một câu hỏi mới bắt đầu nhưng tôi đang tìm kiếm thông tin mâu thuẫn trực tuyến. Tôi sẽ hỏi tại trường đại học nhưng nó được ra cho đến tháng hai năm tới.Do Vectors tự động thay đổi kích thước?

Tự động thay đổi kích thước phông chữ? Hoặc bạn có cần kiểm tra kích thước hiện tại định kỳ và thay đổi kích thước khi bạn cần thêm không gian. Nó có vẻ được thay đổi kích thước cho tôi tự động nhưng tôi không chắc chắn nếu đó là một tính năng hoặc trình biên dịch vẫy một cây đũa thần.

+2

Câu trả lời ngắn gọn: có. –

+8

Nó thay đổi kích cỡ nếu bạn sử dụng 'insert' hoặc' push_back', nhưng không phải nếu bạn sử dụng toán tử subscript (như 'std :: map <>' does). – ildjarn

+0

Vui lòng kiểm tra: http://stackoverflow.com/questions/12271017/initial-capacity-of-vector-in-c để phân tích đầy đủ. –

Trả lời

11

Nếu bạn sử dụng push_back hoặc insert, vâng vector thay đổi kích thước của chính nó. Đây là một bản demo:

#include<iostream> 
#include<vector> 

using namespace std; 

int main() { 
    vector <int> a; 
    a.push_back(1); 
    a.push_back(2); 
    a.push_back(3); 
    for (int value : a) { 
     cout << value << " "; 
    } 
    cout << endl << "Current size " << a.size() << endl; 
    return 0; 
} 

Nó cung cấp cho đầu ra như:

1 2 3 
Current size 3 

Ghi bây giờ nếu bạn làm a[3] = 5. Nó sẽ không tự động thay đổi kích cỡ của bạn.
Ngoài ra, bạn cũng có thể thay đổi kích thước véc tơ theo cách thủ công nếu muốn. Đối với bản demo, hãy thêm mã sau vào mã trên.

a.resize(6); 
for (int value : a) { 
    cout << a << " "; 
} 
cout << endl << "Current size " << a.size() << endl; 

Bây giờ nó sẽ ra:

1 2 3 
Current size 3 
1 2 3 0 0 0 
Current size 6 

Nó nghĩ rằng bạn có câu trả lời của bạn.

+0

Chọn Nit: 'vector :: iterator it;' ... 'cho (it = a.begin(); it :: iterator it = a.begin(); it! = a.end(); ++ it) '. (tức là định nghĩa biến trong phạm vi hữu ích chặt chẽ nhất, '! =' là thành ngữ vì nó hoạt động đối với tất cả các vùng chứa tiêu chuẩn, '++ it' để tránh sự phụ thuộc vào trình tối ưu hóa để loại bỏ tạm thời). –

+0

Hoặc thậm chí đối với phạm vi 'cho (const auto & e: a) {std :: cout << e <<" "; } 'kể từ C++ 11. – Jarod42

+0

@TonyD Tôi chủ yếu là mã trong 'C' và tôi mới vào' C++ ', Vì vậy, hầu hết mã' C++' của tôi trông giống như 'C'. Ngoài ra nó không ảnh hưởng đến câu trả lời. Dù sao, cảm ơn đã đề cập đến tôi sẽ cập nhật nó. –

5

Tự động thay đổi kích thước phông chữ?

Vâng, họ làm, và bạn có thể thuyết phục mình về điều đó rất dễ dàng:

std::vector<int> squares; 
for (int i = 0; i < 100; ++i) 
{ 
    squares.push_back(i * i); 
    std::cout << "size: " << squares.size() << "\n"; 
} 
Các vấn đề liên quan