Gán 1 vector cho vector trong c++

Mọi người ơi, trong c++ gán 1 vector cho vector sẽ lâu hơn đúng ko ạ, hay do dùng vector nên nó chạy chậm hơn dùng mảng ạ

vector<int> a;
// làm gì đó với a
vector<int> copy_a(a);

Thế này cũng được mà nhỉ.

1 Like

Bạn có thể đưa ra một context cụ thể được không? Việc sử dụng array thay vì sử dụng vector nó chỉ cải thiện hiệu suất thêm tầm 5-10% thôi, trong khi cân nhắc thay đổi thiết kế chương trình có thể cải thiện hiệu suất đáng kể hơn nhiều.

2 Likes

Hồi trước mình có làm một cái mini tool để test performance của các function, sử dụng bộ đếm thời gian thực thi:

Cách sử dụng khá đơn giản:

PerformanceTest::run(int nTime, callback_function normalFunc, callback_function optimizedFunc)

nTime: số lần gọi đi gọi lại hàm cần test
normalFunc: nhận vào địa chỉ của một hàm kiểu void (void); hàm mà bạn cho là hiệu suất kém
optimizedFunc: nhận vào địa chỉ của một hàm kiểu void (void); hàm mà bạn cho sẽ tối ưu hơn

Ví dụ:

void foo()
{
	// O(n^2)
}

void bar()
{
	// O(nlogn)
}

PerformanceTest::run(1000000, foo, bar);

Bạn có thể test và so sánh giữa array và vector, cái nào nhanh hơn, có đáng kể không, …

3 Likes

mình khai báo 2 vector a,b rồi sau đó push giá trị vào vector a, nếu thoả mãn điều kiẹn thì mình gán = cách b=a như gán giá trị cho biến :))

Bạn có thể thử std::vector::swap, exchange content chắc sẽ nhanh hơn copy content.

2 Likes

vector thì sẽ chạy lâu hơn mảng.
Tất nhiên thằng nào “cồng kềnh” hơn sẽ chạy chậm hơn.
Nhưng nhìn chung chúng nó đều nhanh cả.
Nhanh chậm này không đáng để quan tâm.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?